[TIL][Repl.it]Python_24.Testing

yejin20·2020년 9월 19일
0

TIL

목록 보기
17/30
post-thumbnail

[Repl.it] 24번 문제다...if문을 사용하는 문제.
풀긴 풀었는데 멘토님이 쓰신 model solution을 보고 한줄씩 또 분해해봤다.


월(month)와 일(day), 이 2가지를 input 값으로 받았을때, 2019년의 해당 월과 일의 다음 날의 월과 일을 출력해주세요.
예를 들어, month 는 3이고 일은 31이면 2019년 3월 31일의 다음날은 4월 1일 임으로 다음과 같이 출력이 되면 됩니다 (월 과 일을 각각 다른 줄에 출력 해주세요).

2019년도의 달력을 검색했다.
28일 : 2월
30일 : 4, 6, 9, 11월
31일 : 1, 3, 5, 7, 8, 10, 12월

기본적으로 if문에
month는 0<month<=12
day의 기준을 0<day<28로 잡고 elif로 다른 조건들을 추가했다.


month = int(input())
day = int(input())

if (month > 0 and month <= 12) and (day > 0 and day < 28) :
  print(month)
  print(day + 1)
  
elif month == 2 and day == 28 :
  print(3)
  print(1)
  
elif month == 12 and day == 31 : 
  print(1)
  print(1)
  
elif (month == 4 or month == 6 or month == 9 or month == 11) and day >= 30 :
  print(month + 1)
  print(1)
  
elif (month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10) and day >= 31 :
  print(month + 1)
  print(1)
  
else :
  print(month)
  print(day + 1)  

이렇게 해서 제출했고 통과도 됐는데 다른 사람들은 어떻게 코드를 짰을지 궁금해서 승호님한테 여쭤보면서 잠시 얘기를 했다가 내가 승호님과 얘기한 걸 들으셨는지! 상태님이 오셔서!! 이렇게 하면 model solution이라고 멘토님이 쓰신 것 같은(?) 코드를 확인할 수 있다면서 알려주셨다.
month = int(input())
day = int(input())

if ((day == 30) and (month == 4 or month == 6 or month == 9 or month == 11)
    or (day == 28) and (month == 2)
    or (day == 31)):
  month += 1
  day = 1
else:
  day += 1
  
if month == 13:
  month = 1

print(month)
print(day)

어떻게... 이런 코드를 짤 수 있는거지.......? 이렇게 간단하게...........................
1분동안 놀라고 1분동안 감탄하고 1분동안 잠깐 자괴감들었다가 1분동안 스스로를 다독인 후에야 하나씩 분해했다.

아무래도 ㅎㅏ나하나 뜯어보려고 노트에 필기해서 하나씩 훑어봤다.
30일로 끝나는 4,6,9,11월과 2월 28일, 31일이 한 if문 안에 넣을 수 있는거였다니.. 아무래도 열심히 공부해야할 것 같다. 더 열심히 많은 코드를 쳐봐야지..

profile
개(발자 어)린이입니다

0개의 댓글