1476번 : 날짜 계산 - Python

FriOct·2023년 5월 11일
0

PS

목록 보기
94/108

문제

https://www.acmicpc.net/problem/1476

풀이

나머지 연산을 이용해서 연도가 들어날때마다 각 범위를 나머지 연산해서 입력값이랑 같아지면 그 때의 년도를 출력한다.

코드

from sys import stdin

input = stdin.readline

E, S, M = map(int,input().split())
e, s, m = 0, 0, 0
i = 0

while True:
    e = i%15+1 # 1~15
    s = i%28+1 # 1~28
    m = i%19+1 # 1~19
    #목표 연도라면
    if e == E and s == S and m == M:
        #i를 0부터 시작했기때문에 +1해준다.
        print(i+1)
        break
    i+=1

더 좋은 풀이

증가하는 연도(year)에서 입력받은 연도(E,S,M)을 빼고, 각 범위의 최대 값으로 나눴을 때 나머지가 0이라면(배수라면) 그 연도(year)가 준규가 사는 나라의 연도일 것이다.

입력받은 E가 1이라면 우리 연도로 계산 했을때 1, 16, 31을 의심해 볼 수 있다. 즉 (1-1)%15==0이고, (16-1)%15==0이다. 나머지를 빼면 배수가 된다.

더 좋은 코드

from sys import stdin

input = stdin.readline

E, S, M = map(int,input().split())
year = 1

while True:
    #연도(year)에서 주어진 연도(E,S,M)를 뺏을 때의 나머지가 모두 0이라면 준규가 사는 나라의 연도가 될것이다.
    if (year-E)%15==0 and (year-S)%28 == 0 and (year-M)%19 == 0:
        break
    year+=1

print(year)
profile
꿈 많은 개발자

0개의 댓글