Difficulty 1
[문제]
[코드 및 결과]
#include <stdio.h>
int main(int argc, char** argv) {
int T, y, m, d;
int day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
scanf("%d", &T);
for (int t = 1; t <= T; t++) {
scanf("%4d%2d%2d", &y, &m, &d);
if (m >= 1 && m <= 12 && d >= 1 && d <= day[m])
printf("#%d %04d/%02d/%02d\n", t, y, m, d);
else
printf("#%d -1\n", t);
}
return 0;
}
[설명]
테스트케이스 T, 연 y, 월 m, 일 d을 정수형으로 선언한다.
각 달의 일수는 배열 day에 저장하는데, 후에 좀 더 직관적으로 편하게 표시하기 위해서 인덱스 0 부분은 0으로 채워서 인덱스 1부터 시작하도록 한다.
숫자 8자리를 입력 받는데, 이를 각각 숫자 자리대로 출력하기 위해서 %nd에 n을 필요에 따라 바꿔서 y, m, d를 입력받는다.
문제의 조건대로 월이 1~12까지, 일이 1~각달의 말일까지를 조건식으로 설정하여 이를 만족할 시 연/월/일 형식으로 출력하도록 하고 아닐 경우에는 -1을 출력하도록 한다.
이때, 01010101의 경우 %d만을 이용해서 출력하면 101/1/1처럼 출력되므로 문제에서 원하는 출력 형태가 아니다.
따라서, 앞에 0까지 출력될 수 있도록 %0nd 형식으로 포맷형을 설정한다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
'C > SWEA' 카테고리의 다른 글
[SWEA] #1926. 간단한 369게임 (0) | 2021.11.19 |
---|---|
[SWEA] #1984. 중간 평균값 구하기 (0) | 2021.11.14 |
[SWEA] #1970. 쉬운 거스름돈 (0) | 2021.11.06 |
[SWEA] #2046. 스탬프 찍기 (0) | 2021.11.06 |
[SWEA] #1204. 최빈수 구하기 (0) | 2021.10.10 |
댓글