Python

[백준-29722번] 브실혜성

고고잉93 2023. 11. 10. 13:10
728x90

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

 

29722번: 브실혜성

혜성처럼 나타난 브실컵의 아이돌 브실이를 보기 위해 전국 각지의 사람들이 천문대로 모였다. 브실이에게 "혜성처럼 나타난" 이라는 수식어가 붙은 이유는 혜성처럼 주기적으로 관측할 수 있

www.acmicpc.net

문제
혜성처럼 나타난 브실컵의 아이돌 브실이를 보기 위해 전국 각지의 사람들이 천문대로 모였다. 브실이에게 "혜성처럼 나타난" 이라는 수식어가 붙은 이유는 혜성처럼 주기적으로 관측할 수 있기 때문이라고 한다. 오늘 브실이를 볼 수 있다고 할 때, 브실이를 다시 볼 수 있는 날짜를 구하자.

편의를 위해 이 문제에서 한 달은 30일, 1년은 12달(즉, 1년은 360일)로 가정하자.

 

입력

첫 번째 줄에 오늘 날짜가 yyyy-mm-dd 형식으로 주어진다. 

두 번째 줄에 정수 이 주어진다. 이것은 브실이를 일 주기로 볼 수 있다는 의미이다.

 

출력

오늘 이후에 브실이를 볼 수 있는 가장 이른 날짜를 yyyy-mm-dd 형태로 출력한다.

 

예제 입력 1

2023-07-08
30

예제 출력 1

2023-08-08

나의 풀이 - ( 실패 ! )

Y,M,D=map(int,input().split('-'))
L=int(input())
a=Y*360+30*M+D
ans=a+L
x,y=divmod(ans,360)
c,d=divmod(y,30)
print(x,'%2d'%c,'%2d'%d,sep=('-'))

 

정말 단순하게 년-월-일을 일수로 전부 환산한다음 주어진 L을 더해서 다시 년/월/일로 나누는 방법으로 했다...

하지만 360 혹은 30으로 나누어 떨어질시 0월 0일이 되는 문제가 있었다.....









y, m, d = map(int, input().split("-"))
N = int(input())
d += N
m += (d - 1) // 30
d = (d - 1) % 30 + 1
y += (m - 1) // 12
m = (m - 1) % 12 + 1
print("{}-{}-{}".format(y, str(m).zfill(2), str(d).zfill(2)))

 

해답에서는 0으로 나누어 떨어지는걸 방지하여 -1 을 해준 후 다시 1을 더해주는 방식으로 진행하여 문제를 진행하였다.

+  zfill 함수는 문자열의 왼쪽에 0을 채워주는 기능을 함.

728x90