백준 문제 1476번 날짜 계산을 푸는데 아무리 생각해도 알고리즘은 맞는거 같은데 시간초과가 계속 나오는 것이다.
E, S, M = map(int,input().split())
# E 15 S 28 M 19
if E == 15: E = 0
if S == 29: S = 0
if M == 19: M = 0
Y = 1
while True:
if Y % 15 == E and Y % 19 == M and Y % 28 == S:
break;
Y += 1
print(Y)
계속 곰곰히 고민해 본 결과 반복문 단계에서 문제는 아닐꺼 같아서
다른 부분을 보니 입력 값을 받는 부분이 아니라면
if 문인데 if 문을 곰곰히 한~ 참을 보니 이유를 도저히 모르고 딴 짓을 하다 보니
드디어 됬다...
어디서 들었을까 생각해보니 나머지 연산자가 아니고 나누기 연산(/)은 느린 연산이여서 >>(비트연산자)로 나누기를 한다는 곳에서 영감을 받은거 같기도하다.
정말 신기하다 우연이 겹쳐서 된것이다.
공부를 더 열심히해야겠따
고친 코드
# %연산은 속도가 오래걸린다.
E, S, M = map(int,input().split())
Y = 1
while True:
if (Y-E) % 15 == 0 and (Y-S) % 28 == 0 and (Y-M) % 19 == 0 :
break
Y += 1
print(Y)