풀이
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
# ///////////////////////////////////////////////////////////////////////////////////
n = input()
year = n[:4]
mon = n[4:6]
day = n[6:8]
day_dict = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
if (int(mon) >= 13) or (int(mon) <= 0):
print(-1)
continue
else:
if day_dict[int(mon)] < int(day) or int(day) <= 0:
print(-1)
continue
else:
print(year, mon, day)
1. 연속된 숫자배열을 입력 받고, 이를 index로 잘라 연,월,일로 사용한다.
2. 각 월마다 일자를 딕셔너리에 저장하였다.
3. if-else 문으로 월이 1~12월이 아니면 유효하지 않으므로 -1을 출력하도록 하였고, day 값이 월에 지정된 날짜보다 크거나, 0과 작거나 같으면 유효하지 않으므로 -1을 출력하였다.
4. 나머지 경우는 유효하므로 연 월 일을 출력하였다.
'파이썬 > 파이썬 알고리즘' 카테고리의 다른 글
[swea - 파이썬] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 (0) | 2021.07.28 |
---|---|
[swea - 파이썬] 2063. 중간값 찾기 (0) | 2021.07.21 |
[swea - 파이썬] 2071. 평균값 구하기 (0) | 2021.07.21 |
[swea - 파이썬] 2072. 홀수만 더하기 (0) | 2021.07.20 |
[swea - 파이썬] 1936. 1대1 가위바위보 (0) | 2021.07.20 |
댓글