본문 바로가기

알고리즘/Python

[Python | SWEA] 1948. 날짜 계산기

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PnnU6AOsDFAUq&categoryId=AV5PnnU6AOsDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제

월 일로 이루어진 날짜를 2개 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 프로그램을 작성하라.

 

제출 답안

T = int(input())
days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for test_case in range(1, T + 1):
      mm1, dd1, mm2, dd2 = map(int, input().split())
      answer=0
      if mm1==mm2:
            answer = dd2-dd1+1
      else:
            m = mm2-mm1
            for i in range(m+1):
                  if i==0:
                        answer += days[mm1-1]-dd1+1
                  elif i==m:
                        answer += dd2
                  else:
                        answer += days[mm1+i-1]
                        
      print(f"#{test_case} {answer}")

 

개선 답안

directory를 이용하면 좀 더 명확한 코드를 작성할 수 있다.

또한 두번째 일수는 무조건적으로 더해줘야 하기에 굳이 if문을 사용할 필요가 없었다.

T = int(input())

for t in range(1, T+1) :
    m1, d1, m2, d2 = map(int, input().split())

    month = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
    answer = 0
    for i in range(m1, m2) :
        if m1 == i :
            answer += month[i] - d1 + 1
        else :
            answer += month[i]
    answer += d2
    
    print("#{} {}".format(t, answer))

 

참고 자료

https://o-sae.tistory.com/7

 

[SWEA][파이썬] 1948. 날짜 계산기

문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PnnU6AOsDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(

o-sae.tistory.com