블링블링 범블링

[백.단.풀.3] 2007년 (1924) 본문

알고리즘 문제풀이/백준

[백.단.풀.3] 2007년 (1924)

뻠스키 2019. 2. 14. 16:58

Step : <for문 사용해보기>

Title : " 2007년 "


시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초128 MB201238478750743.396%

문제

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

예제 입력 

1 1

예제 출력 

MON




 음... 이번 문제도 쉬운 문제이다.


그런데 2번이나 틀렸습니다 가 나왔다.


이유는,

첫번 째는 문제를 제대로 읽지 않고, 짝수 홀수 달로 30일 31일 로 계산해서 구현해서 그랬고,

두번 째는 문제를 다시 읽고 풀었는데, 배열을 SUN ~ SAT 가 아닌 " " ~ "SUN" 까지 만들어서 에러가 났다.



정말 문제를 풀 때는 꼭 문제를 완벽하게 읽고, 머리로 작동 알고리즘을 한 번 생각한 다음 이게 output 과 일치하는 방향으로 흘러가는지 확인하고 코드를 짜기 시작해야된다는 것을 명심하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
 
int x, y, cur;
char day[7][4= { "SUN""MON""TUE""WED""THU""FRI""SAT" };
 
int main()
{
    scanf("%d %d"&x, &y);
 
    cur += y;
    for (int i = 1; i < x; i++)
    {
        if (i == 2) cur += 28;
        else if (i == 4 || i == 6 || i == 9 || i == 11) cur += 30;
        else if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) cur += 31;
    }
    cur %= 7;
 
    printf("%s\n", day[cur]);
    
    return 0;
}


Comments