20210113 // 삼성 SW Expert 아카데미 // 2056

2021. 1. 13. 12:40Programming/SW Expert Academy

삼성 SW Expert 아카데미 2056번 "연월일 달력" 문제입니다.

TC = int(input())
for tc in range(1, TC+1):
    date = input()
    if len(date) != 8:
        print("#%s"%tc, -1)
    else:
        if int(date[4:6]) > 0 and int(date[4:6]) < 13:
            if int(date[4:6]) == 2:
                if 0 < int(date[6:]) < 29:
                    print("#%s "%tc, date[0:4], '/', date[4:6], '/', date[6:], sep="")
                else:
                    print("#%s"%tc, -1)
            elif int(date[4:6]) in [1,3,5,7,8,10,12]:
                if 0 < int(date[6:]) < 32:
                    print("#%s "%tc, date[0:4], '/', date[4:6], '/', date[6:], sep="")
                else:
                    print("#%s"%tc, -1)
            else:
                if 0 < int(date[6:]) < 31:
                    print("#%s "%tc, date[0:4], '/', date[4:6], '/', date[6:], sep="")
                else:
                    print("#%s"%tc, -1)
        else:
            print("#%s"%tc, -1)

입력 포맷은 연 4자리 월 2자리 일 2자리 총 8자리다. 따라서 date에 문자열 형식으로 입력 받는다.

 

만약 이 8자리 형식을 만족하지 못한다면 -1(오류)을 출력한다.

 

정상적으로 입력을 받았을 경우 date 문자열에서 4:6 구간(월)이 유효한 월인지 따진다.(1월~12월)

 

유효한 월이 아닐 경우 -1(오류)을 출력한다.

 

유효한 월일 경우 월에 따른 총 일수를 따진다. 1,3,5,7,8,10,12월은 31일까지, 4,6,9,11월은 30일까지 2월은 28일까지로 따진다.

 

각각의 월에서 유효한 일수가 아닐 경우 -1(오류)을 출력한다.