[PS] 230714 유형별 코테 준비
[PS]는 문제해결 및 알고리즘을 공부한 내용을 담고 있습니다.
문제는 백준 Online Judge, Leetcode에서 참고했으며, 본문에서는 문제 접근 방식과 새로 배운 내용을 담고 있습니다.
1934. 최소공배수
T = int(input())
for _ in range(T):
A, B = map(int,input().split())
setA = set()
setB = set()
if(A == B):
print(A)
continue
elif(A%B == 0):
print(A)
continue
elif(B%A == 0):
print(B)
continue
else:
for i in range(2, A+1):
if(A%i == 0):
setA.add(i)
for i in range(2, B+1):
if(B%i == 0):
setB.add(i)
setInter = setA & setB
answer = A*B
interLen = len(setInter)
for i in range(interLen):
currentNumber = setInter.pop()
if(answer%currentNumber == 0):
answer /= currentNumber
print(int(answer))
- 예시 Tc도 맞았고, 내가 생각하는 오류 지점도 다 해결했는데 4%에서 틀렸습니다가 나왔다
- 유클리드 호제법을 읽고 코드를 구현했더니 해결됐다는 분이 있어서 그대로 해보려고 한다
def gcd(m,n):
if n == 0:
return m
mod = m % n
if mod != 0:
m,n = n, mod
return gcd(m,n)
else:
return n
T = int(input())
for _ in range(T):
A,B = map(int,input().split())
print(int(A*B/gcd(A,B)))
- 유클리드 호제법을 구하는 함수
gcd를 그대로 따라했더니 맞았습니다가 나왔다. - 직접
gcd(13,17)을 따라가면서 결과를 구해봤는데 17%13, 13%4, 4%1과 같은 생각은 어떻게 떠올리는거지..? 일단 외우자 - 해결 완료
2476. 주사위 게임
- 해결 완료
2754. 학점 계산
- 완전 쉬운 문제인데 돌아갔다
- 해결 완료
7567. 그릇
- 해결 완료