문제보고 뭐지? 수학문젠가 하고 당황했는데, 브루트 포스 였다. 말그대로 완전탐색으로 일일이 하나씩 대조해가보면서 풀면 됨. 인터넷에 보니 더 수학적 접근이 가미된 풀이방식이 있었다. 하지만 사실 그런 공식을 생각해내지 못한다하더라도 하나하나씩 해보는 완전탐색으로 충분히 풀 수 있다. 나는 초보자인지라 일단 두가지 방식을 모두 공부해야겠다고 생각했다.
첫번째 방법
- while 문이 참일 때 동안 e,s,m,year 모두 1씩 더한다.
- 목표값과 동일하면 해당 year를 출력하고 break로 빠져나온다.
E, S, M = map(int, input().split())
e,s,m = 1,1,1
year = 1
while True :
if e == E and s == S and m == M :
print(year)
break
s += 1
e += 1
m += 1
year += 1
if e == 16 :
e = 1
if s == 29 :
s = 1
if m == 20 :
m = 1
두번째 방법
- year를 더하면서, year - e or s or m이 해당 주기에 맞게 떨어지는지 확인한다.
E, S, M = map(int, input().split())
year = 1
while True :
if (year-e)%15 ==0 and (year-s)%29 == 0 and (year-m)%19 == 0 :
print(year)
break
year += 1
'🤜 코테 > 알고리즘' 카테고리의 다른 글
백준 1158 : 요세푸스 (0) | 2021.03.16 |
---|---|
백준 1748 : 수 이어쓰기1 (0) | 2021.03.15 |
이진 탐색 (Binary Search) (0) | 2021.02.23 |
정렬 (sort) (0) | 2021.02.23 |
파이썬 리스트(배열)을 문자열로 변환하기 (0) | 2021.02.21 |