본문 바로가기

Study/Algorithm 문제풀이

[SW Expert Academy] 2056. 연월일 달력(using python)

728x90
반응형

*문제의 저작권은 SW Expert에 있습니다.

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QLkdKAz4DFAUq&categoryId=AV5QLkdKAz4DFAUq&categoryType=CODE&problemTitle=%EC%97%B0%EC%9B%94%EC%9D%BC&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

[ 문 제 ]

연월일 순으로 구성된 8자리의 날짜가 입력으로 주어진다.

그림 1.

해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면
[그림1] 과 같이 ”YYYY/MM/DD”형식으로 출력하고,
날짜가 유효하지 않을 경우, -1 을 출력하는 프로그램을 작성하라.
연월일로 구성된 입력에서 월은 1~12 사이 값을 가져야 하며
일은 [표1] 과 같이, 1일 ~ 각각의 달에 해당하는 날짜까지의 값을 가질 수 있다.

표1.

※ 2월의 경우, 28일인 경우만 고려한다. (윤년은 고려하지 않는다.)

[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.

[출력]
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

입력과 출력 예시

[전체코드]

T = int(input())

 

for i in range(1, T+1):

    calendar = input()

    if len(calendar) != 8:

        print("#{} {}".format(i,-1))

    elif calendar[4:6] == "00" or int(calendar[4:6]) > 12:

        print("#{} {}".format(i,-1))

    elif (calendar[4:6] == "04" or calendar[4:6] == "06" or calendar[4:6] == "09" or calendar[4:6] == "11"and (int(calendar[6:8]) > 30 or int(calendar[6:8]) < 1):

        print("#{} {}".format(i,-1))

    elif calendar[4:6] == "02" and (int(calendar[6:8]) > 28 or int(calendar[6:8]) < 1):

        print("#{} {}".format(i,-1))

    elif (calendar[4:6] == "01" or calendar[4:6] == "03" or calendar[4:6] == "05" or calendar[4:6] == "07" or calendar[4:6] == "08" or calendar[4:6] == "10" or calendar[4:6] == "12"and (int(calendar[6:8]) > 31 or int(calendar[6:8]) < 1):

        print("#{} {}".format(i,-1))

    else:

        print("#{} {}/{}/{}".format(i, calendar[0:4],calendar[4:6],calendar[6:8]))

 

#####################################################################################

코드를 좀 더 간결하고, 간단하게 작성할 수 있는 방법을 찾아봐야 될 것 같다.

728x90
반응형