2056

HoRi·2022년 7월 14일
0

SWEA_PY

목록 보기
13/32

2056. 연월일 달력

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

해당 날짜의 유효성을 판단한 후, 날짜가 유효하다면 YYYY/MM/DD 형식으로 출력하고, 날짜가 유효하지 않을 경우 -1을 출력하는 프로그램을 작성해보자.

31일은 1, 3, 5, 7, 8, 10, 12 월

30일은 4, 6, 9, 11 월

28일은 2월이다. (단, 윤년은 고려하지 않는다.)

[입력]

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

[출력]

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

코딩

C = int(input())					# 입력받은 값(테스트 횟수)을 정수형으로 변환해서 C에 저장

for i in range(1, C+1):				# 1부터 C+1까지 1씩 증가하는 반복문
	Date = input()					# 입력받은 값(날짜)을 Date에 저장
    month = int(Date[4:6])			# 입력받은 값 배열의 인덱스 값이 4,5인 값을 month에 저장
    day = int(Date[6:])				# 입력받은 값 배열의 인덱스 값이 6이상인(6, 7) 값을 day에 저장
    if month in (1,3,5,7,8,10,12):	# 만약 month가 1,3,5,7,8,10,12일 경우(해당 달은 일 수가 31일까지 있음)
    	if day <= 31:				# day값이 31 이하라면
        	print(f'#{i} {Date[:4]}/{Date[4:6]}/{Date[6:]}')
            						# fstring을 사용해서 연월일 모양으로 출력(년은 Date의 0부터 3번 인덱스까지, 월은 Date의 4부터 5번 인덱스까지, 일은 Date의 6부터 7번 인덱스를 나누어서 출력)
        else:						# 입력받은 값이 31이하가 아니라면
        	print(f'#{i} -1')		# -1을 출력
    elif month in (4,6,9,11):		
    	if day <= 30:
        	print(f'#{i} {Date[:4]}/{Date[4:6]}/{Date[6:]})
        else:
        	print(f'#{i} -1')
    elif month == 2:
    	if day <= 28:
        	print(f'#{i} {Date[:4]}/{Date[4:6]}/{Date[6:]})
        else:
        	print(f'#{i} -1')
    else:
    	print(f'#{i} -1')
        
        							# 밑의 내용은 동일합니다.



모든 출처는 SW Expert 아카데미에 있습니다.

해당 글은 영리적 목적이 아닌 학습의 기록으로 사용되었습니다. 오기나 잘못된 부분은 말씀해주시면 수정하겠습니다.

profile
무지성 작성소

0개의 댓글