제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.12]

김뚱입니다 2025. 4. 12. 22:50

[강의 요약]

[Part 02. 수학_Ch 01. 기초 수학] 강의 수강

07_최소공배수부터 10_진법(파이썬)까지 강의 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰░                                         ] 27/100일 (27%)

잠을 이겨내고 작성함. 내가 승자다!

 

 

 

[최소공배수]

▶ 공배수란?

두 수 이상의 공통된 배수를 말한다.

 

예시는 다음과 같다.

3의 배수: 3, 6, 9, 12, 15, 18

5의 배수: 5, 10, 15, 20, 25

→ 공배수: 15, 30, 45, ...

 

 

▶ 최소공배수란?

공배수 중 가장 작은 수를 말한다.

 

예시는 다음과 같다.

3과 4의 공배수: 12, 24, 36...

→ 최소공배수: 12

6, 12, 15의 최소공배수: 60

 

 

▶ 최소공배수 구하는 방법

방법1) 소인수분해 활용

모든 소인수 중 지수가 큰 것만 곱한다.

 

예시는 다음과 같다.

6 = 2 × 3

12 = 2² × 3

15 = 3 × 5

→ 최소공배수 = 2² × 3 × 5 = 60

 

 

방법2) 유클리드 호제법 활용

최소공배수 = (a × b) // 최대공약수(GCD)

 

예시는 다음과 같다.

LCM(12, 20) = (12 × 20) // GCD(12, 20)

GCD(12, 20) = 4

→ LCM = (240 // 4) = 60

 

 

 

 

[최소공배수_파이썬]

간단한 함수 구현으로 효율적으로 구할 수 있다.

▶ 코드 : 파이썬으로 두 수의 최소공배수 구하기

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return (a * b) // gcd(a, b)

a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))

print("최소공배수:", lcm(a, b))

★ 출력 결과 ★

첫 번째 숫자: 12
두 번째 숫자: 20
최소공배수: 60

 

 

▶ 코드 : 파이썬으로 세 수의 최소공배수 구하기

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return (a * b) // gcd(a, b)

# 세 수의 최소공배수는 앞 두 개로 LCM 계산 후, 그 결과와 세 번째 수로 다시 LCM
a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))
c = int(input("세 번째 숫자: "))

result = lcm(lcm(a, b), c)
print("최소공배수:", result)

★ 출력 결과 ★

첫 번째 숫자: 6
두 번째 숫자: 12
세 번째 숫자: 15
최소공배수: 60

 

 

▶ 코드 : 파이썬으로 입항 주기 계산

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return (a * b) // gcd(a, b)

# 입항 주기: 과일(3일), 생선(4일), 야채(5일)
print("모든 선박이 동시에 입항하는 주기:", lcm(lcm(3, 4), 5), "일")

★ 출력 결과 ★

모든 선박이 동시에 입항하는 주기: 60 일

 

 

▶ 요약

  • 공배수: 두 수 이상의 공통된 배수
  • 최소공배수: 공배수 중 가장 작은 수
  • 공식: 최소공배수 = (a × b) // GCD(a, b)
  • 세 수 이상일 때는 순차적으로 LCM 계산

 

 

 

 

[진법]

▶ 진법이란?

수를 표현할 때 사용하는 기준 숫자의 개수를 말한다.

 

예시는 다음과 같다.

2진법: 0, 1

8진법: 0~7

10진법: 0~9 (우리가 일상에서 쓰는 것)

16진법: 0~9 + A(10) B(11) C(12) D(13) E(14) F(15)

 

 

 

 

[진법_파이썬]

파이썬에서는 진법 변환이 매우 간단하다.

▶ 코드 : 10진수 → 다른 진수로 변환

방법1) bin(), oct(), hex() 함수 사용

n = 25
print(bin(n))  # 2진수
print(oct(n))  # 8진수
print(hex(n))  # 16진수

★ 출력 결과 ★

0b11001
0o31
0x19

 

 

방법2) format() 함수 사용

n = 25
print(format(n, 'b'))   # 2진수
print(format(n, 'o'))   # 8진수
print(format(n, 'x'))   # 16진수

★ 출력 결과 ★

11001
31
19

 

 

코드 : 다른 진수 → 10진수로 변환

int(문자열, n진수) 함수 사용

print(int('11001', 2))  # 2진수 → 10진수
print(int('31', 8))     # 8진수 → 10진수
print(int('19', 16))    # 16진수 → 10진수

★ 출력 결과 ★

25
25
25

 

 

 코드 : 2진수 → 8진수 / 16진수

2진수를 3자리씩 끊으면 → 8진수

2진수를 4자리씩 끊으면 → 16진수

binary = '1010100'   # 2진수 문자열

octal = format(int(binary, 2), 'o')
hexa = format(int(binary, 2), 'x')

print("8진수:", octal)
print("16진수:", hexa)

★ 출력 결과 ★

8진수: 124
16진수: 54

 

 

▶ 요약

  • 진법: 수를 표현하는 기준 숫자의 집합
  • 2진법: 컴퓨터 내부 연산의 기본 (0, 1)
  • 10진수 → X진수: bin(), oct(), hex() 또는 format()
  • X진수 → 10진수: int("문자열", 진수)
  • 2진수 → 8/16진수: int()로 10진수화 후 format()으로 변환

 

 

 

[나의 생각 정리]

진법 변환 과정을 파이썬 내장 함수로 구현하니까 이해하기 쉬웠다.

int(), bin(), format() 같은 함수들이 실제로 어떻게 작동하는지 코드로 구현할 수 있었다.

 

 

[적용점]

  • 앞으로 진법 변환 문제가 나오면 int()와 format() 함수를 우선 활용.
  • 진법 변환은 컴퓨터 구조, 비트 연산, 메모리 등 다양한 개념의 기초가 되므로 숙지 필수
  • 문자열과 진법 간 변환 로직을 함수화하여 코딩테스트 대비를 해보면 좋을 듯

 

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”