[백준] 1476 - 날짜 계산 (Python)
문제
문제 설명
변수 E, S, M의 범위가 각각 다르기 때문에 각 변수의 사이클이 다르다는 것에 집중해서 규칙을 찾아보려고 했다.
몇 가지 예시를 봐 보자!
(E, S, M)
= (15, 2, 11) -> 30 = (E)15+15 = (S)28+2 = (M)19+11
= (12, 1, 19) -> 57 = (E)15+15+15+12 = (S)28+28+1 = (M)19+19+19
굵은 글씨에 집중해서 보면 규칙을 찾을 수 있을 것이다.
굳이 식으로 표현하자면 아래처럼 표현할 수 있을 것 같다.
# e, s, m은 정수 (15*e)+E = (28*s)+S = (19*m)+M
제출 코드
E, S, M = map(int, input().split())
year = 1
while True:
if ((year-E) % 15 == 0) and ((year-S) % 28 == 0) and ((year-M) % 19 == 0):
break
year += 1
print(year)
결과
정리
개념
- 브루트포스 알고리즘: 완전탐색 알고리즘이다. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다.
+) brute: 무식한, force: 힘 '무식한 힘' 알고리즘 이라고 해석할 수 있다.
주석있는 코드
# E: 1-15 / S: 1-28 / M: 1-19
# 입력받기
E, S, M = map(int, input().split())
year = 1
while True:
if ((year-E) % 15 == 0) and ((year-S) % 28 == 0) and ((year-M) % 19 == 0):
break
# if 문에 해당하지 않을 때는 year에 1을 더해준다
year += 1
# 결과값 출력
print(year)
느낀점
규칙은 찾았는데 그걸 코드로 만드는 과정에서 막혔다. 생각보다 훨씬 간단하게 코드를 짤 수 있다는 것을 알고서 신기했다..ㅎ
Author And Source
이 문제에 관하여([백준] 1476 - 날짜 계산 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@alsdud5766/백준-1476-날짜-계산-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)