욤미의 개발일지
[SWEA D1] 2056 연월일 달력 (Python) 본문
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
반응형
'Coding Test > SWEA' 카테고리의 다른 글
[SWEA D1] 2063 중간값 찾기 (Python) (0) | 2022.10.23 |
---|---|
[SWEA D1] 2058 자릿수 더하기 (Python) (0) | 2022.10.23 |
[SWEA D1] 2050 알파벳을 숫자로 변환 (Python) (0) | 2022.10.22 |
[SWEA D1] 2047 신문 헤드라인 (Python) (0) | 2022.10.18 |
[SWEA D1] 2046 스탬프 찍기 (Python) (0) | 2022.10.18 |
Comments