[강의 요약]
[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일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.14] (0) | 2025.04.14 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.13] (0) | 2025.04.13 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.11] (0) | 2025.04.11 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.10] (1) | 2025.04.10 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.09] (0) | 2025.04.09 |