ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1924 - 2007년
    백준 algorithm 2020. 7. 10. 14:12
    반응형

    문제 설명

     

    => 구현 문제입니다. 

    => 해당 문제의 경우 1년의 case만 생각하면 되기 때문에 brute Force(브루트 포스)로 문제를 풀어도 전혀 무방합니다. 

     

     

     

     

    • week [7] : 일주일을 저장하는 배열

    • index : 위의 배열을 따라다니며 요일을 확인하는 변수 

    • X와 Y의 값을 입력받습니다.

    • switch case문을 이용해 한 달이 31일인 경우, 30일인 경우 28일인 경우를 나눕니다. 

    • 제가 구하는 달의 일까지만 index를 지속적으로 추가해줍니다.

    • index는 7을 벗어나지 않으므로, %7을 해주어 숫자가 커지는 것을 방지해줍니다. 

    • weel [index]의 값을 출력합니다. 

     

     

     

     

    => 위와 같은 logic을 따라 입력받은 X월 Y일의 요일을 알아낼 수 있습니다. 

    => 다른 사람의 경우 X 이전의 달들을 index에 더한 후, Y의 값만큼 더한 후, %7을 통해 문제의 답을 알아내는 방법을 사용했습니다. 

    => 해당하는 방법이 훨씬 간단한 코드를 구현할 수 있으며, 훨씬 빠른 속도를 자랑합니다. 

    => 조금 생각하는 습관을 들여야겠다는 생각을 하였습니다. 

     

     

    
    #include <iostream>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    string week[7]={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
    
    int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        
        int X, Y;
        cin >> X >> Y;
        
        int index =0; //요일 가리킬 index, 1월 1일은 월요일
        for(int i=1; i<=X; i++)
        {
            switch(i)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                {
                    if(i!= X)
                    {
                        for(int j=0; j<31; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                    else{
                        for(int j=0; j<Y; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                }
                    break;
                case 2:
                {
                    if(i!= X)
                    {
                        for(int j=0; j<28; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                    else{
                        for(int j=0; j<Y; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                }
                    break;
    
                    
                case 4 :
                case 6 :
                case 9 :
                case 11:
                case 12:
                {
                    if(i!= X)
                    {
                        for(int j=0; j<30; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                    else{
                        for(int j=0; j<Y; j++)
                        {
                            if(index+1 >6)
                            {
                                index = (index+1)%7;
                            }
                            else{
                                index++;
                            }
                        }
                    }
                    break;
    
                }
                    
            }
        }
        
        
        cout<<week[index]<<'\n';
        return 0;
    }
    
    

     

     

    크리스마스는 화요일
    현충일은 수요일

     

     

     

     

    반응형

    '백준 algorithm' 카테고리의 다른 글

    백준 2667 - 단지번호붙이기  (0) 2020.07.23
    백준 1015 - 수열 정렬  (0) 2020.07.15
    백준 10989 - 수 정렬하기 3  (0) 2020.07.09
    백준 1707 - 이분 그래프  (0) 2020.07.09
    백준 1697 -숨바꼭질  (0) 2020.07.04

    댓글

Designed by Who.