본문 바로가기
C/SWEA

[SWEA] #2056. 연월일 달력

by 단월໒꒱ 2021. 11. 14.

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 형식으로 포맷형을 설정한다.

 

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QLkdKAz4DFAUq&categoryId=AV5QLkdKAz4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=1 

 

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

댓글