욤미의 개발일지

[SWEA D1] 2056 연월일 달력 (Python) 본문

Coding Test/SWEA

[SWEA D1] 2056 연월일 달력 (Python)

욤미 2022. 10. 22. 20:47
728x90
반응형

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

문제

 

SW Expert Academy

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

swexpertacademy.com

 

풀이

연월일 순서의 8자리 숫자가 주어지면 → 날짜의 유효성 판단 → 유효하면 YYYY/MM/DD 형식으로 출력, 유효하지 않으면 -1을 출력

년도는 4자리, 월과 일은 2자리로 패딩해줘야한다. 칸이 남는 경우 0으로 채울 수 있도록 formatting 해준다.

T = int(input())
for test_case in range(1, T + 1):
    date = input()
    y = int(date[:4])
    m = int(date[4:6])
    d = int(date[6:])

    if 1 <= m <= 12:
        if m in [1, 3, 5, 7, 8, 10, 12]:
            if 1 <= d <= 31:
                print(f'#{test_case} {y:04}/{m:02}/{d:02}')
            else:
                print(f'#{test_case} -1')	
        elif m in [4, 6, 9, 11]:
            if 1 <= d <= 30:
                print(f'#{test_case} {y:04}/{m:02}/{d:02}')
            else:
                print(f'#{test_case} -1')	
        else:
            if 1 <= d <= 28:
                print(f'#{test_case} {y:04}/{m:02}/{d:02}')
            else:
                print(f'#{test_case} -1')	
    else:
        print(f'#{test_case} -1')

월별로 날짜를 저장하는 딕셔너리를 정의하여 풀이 가능

month는 key로 사용하고 value를 불러와서 입력받은 d와 비교한다.

days = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}

T = int(input())
for test_case in range(1, T + 1):
    date = input()
    y = int(date[:4])
    m = int(date[4:6])
    d = int(date[6:])

    if 1 <= m <= 12:
        if  1 <= d <= days[m]:
            print(f'#{test_case} {y:04}/{m:02}/{d:02}')
        else:
            print(f'#{test_case} -1')	
    else:
        print(f'#{test_case} -1')

 

728x90
반응형
Comments