ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 알고리즘 / "2016년 a월 b일을 맞춰라"
    카테고리 없음 2019. 9. 30. 20:53
    반응형

    문제 설명

    2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 

    예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

     

    제한 조건

    2016년은 윤년입니다.

    2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

     

    입출력 예

    a  b   result

    5  24  TUE

    12  31   SAT

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class TryHelloWorld {
      public static String test(int a, int b) {
              String answer = "";
              //목0 금1 토2 일3 월4 화5 수6 -> 요일/나머지구조
              //1 . 1 금(1 번째 일이라했을때) -> 1.2 토 (2 번째) 이런식으로 구하자  
              int _31 = 31;
              int _30 = 30;
              int _28 = 28;
              int yoon = 29;
              int day = 0//이걸 7로 나눈다.
              int month[] = {_31,yoon,_31,_30,_31,_30,_31,_31,_30,_31,_30,_31};
              String[] yoEil = {"THU","FRI","SAT","SUN","MON","TUE","WED"};
              for(int i =0; i<a-1; i++) {
                  day+=month[i];
              }
              day+=b;
              answer = yoEil[(day%7)];
              return answer;
        }
    }
     

    Dev. 흑구 Ver.

    -해설

    일단, 월/일 과 요일과의 상관관계는 없습니다. 올해 1월 1일은 목요일이 되고 내년은 금요일이 될수 있음. 

    하지만 일주일이 매번 반복되므로 날짜가 하루 증가할때마다 요일이 하나씩 바뀌고 이 요일은 7가지가 있다는 것을 캐치해야함

    기준날짜인 1월 1일을 첫번째(1) 날짜로 삼고 1월 2일을 두번째(2) 날짜로 삼으면 물론, 그 전날짜는 목요일(0)이 됨

    총 날짜는 1일이 증가하고 요일도 1개 증가함. 이러한 규칙을 이용해 전체 변화한 날짜에서 7을 나눈 나머지가 요일의 배열의 index로 작용하여 해당 요일을 반환하게 됨.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    class TryHelloWorld
    {
        public String getDayName(int a, int b)
        {
          String answer = "";
          switch(a) {
            case 1:
              if(b % 7 == 1)
                answer = "FRI";
              else if(b % 7 == 2)
                answer = "SAT";
              else if(b % 7 == 3)
                answer = "SUN";
              else if(b % 7 == 4)
                answer = "MON";
              else if(b % 7 == 5)
                answer = "TUE";
              else if(b % 7 == 6)
                answer = "WED";
              else
                answer = "THU";
              break;
            case 2:
              if(b % 7 == 1)
                answer = "MON";
              else if(b % 7 == 2)
                answer = "TUE";
              else if(b % 7 == 3)
                answer = "WED";
              else if(b % 7 == 4)
                answer = "THU";
              else if(b % 7 == 5)
                answer = "FRI";
              else if(b % 7 == 6)
                answer = "SAT";
              else
                answer = "SUN";
              break;
            case 3:
              if(b % 7 == 1)
                answer = "TUE";
              else if(b % 7 == 2)
                answer = "WED";
              else if(b % 7 == 3)
                answer = "THU";
              else if(b % 7 == 4)
                answer = "FRI";
              else if(b % 7 == 5)
                answer = "SAT";
              else if(b % 7 == 6)
                answer = "SUN";
              else
                answer = "MON";
              break;
            case 4:
              if(b % 7 == 1)
                answer = "THU";
              else if(b % 7 == 2)
                answer = "FRI";
              else if(b % 7 == 3)
                answer = "SAT";
              else if(b % 7 == 4)
                answer = "SUN";
              else if(b % 7 == 5)
                answer = "MON";
              else if(b % 7 == 6)
                answer = "TUE";
              else
                answer = "WED";
              break;  
            case 5:
                if(b % 7 == 1)
                answer = "SUN";
              else if(b % 7 == 2)
                answer = "MON";
              else if(b % 7 == 3)
                answer = "TUE";
              else if(b % 7 == 4)
                answer = "WED";
              else if(b % 7 == 5)
                answer = "THU";
              else if(b % 7 == 6)
                answer = "FRI";
              else
                answer = "SAT";
              break;
            case 6:
                if(b % 7 == 1)
                answer = "WED";
              else if(b % 7 == 2)
                answer = "THU";
              else if(b % 7 == 3)
                answer = "FRI";
              else if(b % 7 == 4)
                answer = "SAT";
              else if(b % 7 == 5)
                answer = "SUN";
              else if(b % 7 == 6)
                answer = "MON";
              else
                answer = "TUE";
              break;
            case 7:
                if(b % 7 == 1)
                answer = "FRI";
              else if(b % 7 == 2)
                answer = "SAT";
              else if(b % 7 == 3)
                answer = "SUN";
              else if(b % 7 == 4)
                answer = "MON";
              else if(b % 7 == 5)
                answer = "TUE";
              else if(b % 7 == 6)
                answer = "WED";
              else
                answer = "THU";
              break;
            case 8:
                if(b % 7 == 1)
                answer = "MON";
              else if(b % 7 == 2)
                answer = "TUE";
              else if(b % 7 == 3)
                answer = "WED";
              else if(b % 7 == 4)
                answer = "THU";
              else if(b % 7 == 5)
                answer = "FRI";
              else if(b % 7 == 6)
                answer = "SAT";
              else
                answer = "SUN";
              break;
            case 9:
                if(b % 7 == 1)
                answer = "THU";
              else if(b % 7 == 2)
                answer = "FRI";
              else if(b % 7 == 3)
                answer = "SAT";
              else if(b % 7 == 4)
                answer = "SUN";
              else if(b % 7 == 5)
                answer = "MON";
              else if(b % 7 == 6)
                answer = "TUE";
              else
                answer = "WED";
              break;
            case 10:
                if(b % 7 == 1)
                answer = "SAT";
              else if(b % 7 == 2)
                answer = "SUN";
              else if(b % 7 == 3)
                answer = "MON";
              else if(b % 7 == 4)
                answer = "TUE";
              else if(b % 7 == 5)
                answer = "WED";
              else if(b % 7 == 6)
                answer = "THU";
              else
                answer = "FRI";
              break;
            case 11:
                if(b % 7 == 1)
                answer = "TUE";
              else if(b % 7 == 2)
                answer = "WED";
              else if(b % 7 == 3)
                answer = "THU";
              else if(b % 7 == 4)
                answer = "FRI";
              else if(b % 7 == 5)
                answer = "SAT";
              else if(b % 7 == 6)
                answer = "SUN";
              else
                answer = "MON";
              break;
            case 12:
                if(b % 7 == 1)
                answer = "THU";
              else if(b % 7 == 2)
                answer = "FRI";
              else if(b % 7 == 3)
                answer = "SAT";
              else if(b % 7 == 4)
                answer = "SUN";
              else if(b % 7 == 5)
                answer = "MON";
              else if(b % 7 == 6)
                answer = "TUE";
              else
                answer = "WED";
              break;
            }
            return answer;
        }
        public static void main(String[] args)
        {
            TryHelloWorld test = new TryHelloWorld();
            int a=5, b=24;
            System.out.println(test.getDayName(a,b));
        }
    }

    Others Ver.1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class TryHelloWorld
    {
        public String getDayName(int a, int b)
        {
         String answer = " ";
            int[] monthDay={31,29,31,30,31,30,31,31,30,31,30,31};
            for (int i = 1; i < a; i++) {
                b+=monthDay[i-1];
            }
            switch(b%7){
            case 3:answer="SUN";break;
            case 4:answer="MON";break;
            case 5:answer="TUE";break;
            case 6:answer="WED";break;
            case 0:answer="THU";break;
            case 1:answer="FRI";break;
            case 2:answer="SAT";break;
            }
     
     
     
            return answer;
        }
    }

    Others Ver.2

    #윤년이란?

    윤년은 4년에 한번 돌아오는 2월의 날짜수가 29일인 해입니다. 월드컵처럼 4년만에 무조건 돌아오는 것이 아닌 특별한 규칙이 있다.

     - 4로 나누어 떨어지는 해는 윤년, 그 밖의 해는 평년으로 한다.

     - 4로 나누어 떨어지지만 100으로 나누어 떨어지는 해는 평년으로 한다.

     - 단, 400으로 나누어 떨어지는 해는 윤년으로 한다

    출처-https://sas-study.tistory.com

    반응형

    댓글

Designed by Tistory.