728x90
📚문제
📝풀이
# 27590 Sun and Moon
ds, ys = map(int,input().split())
dm, ym = map(int,input().split())
s = ys-ds
m = ym-dm
while s != m:
if s < m:
s += ys
else: m += ym
print(s)
해와 달의 공전주기는 각각 ys, ym
가장 빠른 공전 시기는 현재 지난 시간만큼을 제외한 ys-ds, ym-dm
태양의 주기 : ys-ds += ys
달의 주기 : ym-dm += ym
이 두가지가 일치하면 된다
ys-ds, ym-dm을 각각 초기값으로 잡고
같아질 때가 정답
+
# 27590 Sun and Moon
ds, ys = map(int,input().split())
dm, ym = map(int,input().split())
s = ys-ds
m = ym-dm
res1 = s + ys
res2 = m+ ym
# a,b의 최대공약수
def gcd(a,b):
if a % b ==0:
return b
return gcd(b,a%b)
# a,b의 최소공배수
def lcm(a,b):
return a*b // gcd(a,b)
print(lcm(res1,res2))
위의 코드는 구글링하여 다른 분의 코드를 참고한 거였는데
초기에 생각했던 최소공배수를 이용해서 다시 푼 문제
처음에 문제를 보고 바로 든 생각은 최소공배수로 풀면 되겠다는 생각이 들었다
그래서 해와 달의 각각 가장 빠른 다음 공전 시기
(ys-ds, ym-dm)의 최소공배수를 구했는데 틀렸다
그러다가 다른 코드로 풀면서
문제에 예시를 대입해가며 곰곰이 생각해보니
다음 공전 시기 + 태양과 달의 각 공전주기(ys,ym)
의 최소공배수를 구해야 맞는거였다
728x90
'Python(알고리즘,문제풀이) > BOJ (Bronze IV)' 카테고리의 다른 글
백준 28074번 / 모비스 - 파이썬 (0) | 2023.10.25 |
---|---|
백준 27890번 / 특별히 작은 분수 - 파이썬(XOR 연산) (0) | 2023.10.24 |
백준 27213번 /Граничные клетки(경계 셀?) - 파이썬 (1) | 2023.10.18 |
백준 27110번 / 특식 배부 - 파이썬 (0) | 2023.10.18 |
***백준 26350번 / Good Coin Denomination - 파이썬*** (0) | 2023.10.07 |