본문 바로가기
[SWEA] 풀이/[SWEA] D1

[SWEA] SWEA 2056번: 연월일 달력 파이썬 풀이 - 알고리즘 코딩 문제 해설 python

by codeomni 2023. 4. 11.
반응형

 

안녕하세요.

이번 포스팅은 SWEA의 2055 문제 풀이입니다.

문제 이름은 "연월일 달력" 입니다.

 

 

풀이


1
2
3
4
5
6
7
8
9
10
11
= int(input())
d_r = [312831303130313130313031]
for i in range(T):
    s = input()
    m = int(s[4:6])
    d = int(s[6:])
    result = s[0:4+ '/' + s[4:6+ '/' + s[6:]
    if m > 0 and m < 13 and d > 0 and d <= (d_r[m-1]):
        print('#%d' %(i+1), result)
    else:
        print('#%d %d' %((i+1), -1))
cs

 

핵심: 비교 연산자를 통해 월과 일의 범위를 확인합니다.

일의 경우는 월마다 최대값을 리스트로 선언한 후에 인덱스로 접근한 후 비교합니다.

 

1. 테스트 개수 T를 입력 받습니다.

 

2. 사전에 월별 최대 일수를 지정합니다.

 

3. 입력 받은 테스트 개수 T 만큼 반복합니다.

 

4. 날짜를 입력 받습니다.

 

5~6. 월과 일을 판별할 변수를 슬라이싱 기능을 사용하여 해당 부분만 추출합니다.

 

7. 결과값을 출력할 변수를 선언합니다.

출력 조건에 맞도록 '/' 문자를 더합니다.

 

8~9. 조건문을 통해 월이 1월과 12월 사이, 일이 해당 월의 최대일 수 이하면 결과값을 출력합니다.

d_r[m-1] 은 리스트의 인덱스가 0부터 시작하므로 -1을 한 값으로 접근합니다.

ex) m이 3일 경우는 d_r[2] = 31 으로, 입력한 날짜의 일이 31이하면 해당 날짜를 출력합니다.

 

10~11. 위의 조건을 만족하지 못할 경우 테스트 순번과 -1을 출력합니다.

댓글