가자미의 개발이야기

[프로그래머스] Lv.1 2016년 본문

Computer Science/알고리즘

[프로그래머스] Lv.1 2016년

가자미 2021. 6. 20. 15:48

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

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

programmers.co.kr

 

내 풀이

  • 주어진 월을 고려하여 지난 달의 일 수를 switch문으로 일자에 더한다.
  • 더해진 일자를 요일에 따라 7로 나누어 요일을 반환
class Solution {
    public String solution(int a, int b) {
        while(a!=1){
            switch(a){
                case 2:
                    b+=31;
                    break;
                case 3:
                    b+=29;
                    break;
                case 4:
                    b+=31;
                    break;
                case 5:
                    b+=30;
                    break;
                case 6:
                    b+=31;
                    break;
                case 7:
                    b+=30;
                    break;
                case 8:
                    b+=31;
                    break;
                case 9:
                    b+=31;
                    break;
                case 10:
                    b+=30;
                    break;
                case 11:
                    b+=31;
                    break;
                case 12:
                    b+=30;
                    break;
            }
            a--;
        }
        b=b%7;
        String answer=null;
        switch(b){
            case 1:
                answer="FRI";
                break;
            case 2:
                answer="SAT";
                break;
            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;
        }
        return answer;
    }
}

 

다른 풀이

  • 각 달의 일자와 한 주의 요일을 배열에 저장
  • 반복문을 사용해 일자를 더함
class Solution {
  public String solution(int a, int b) {
      String answer = "";

      int[] c = {31,29,31,30,31,30,31,31,30,31,30,31};
      String[] MM ={"FRI","SAT","SUN","MON","TUE","WED","THU"};
      int Adate = 0;
      for(int i = 0 ; i< a-1; i++){
          Adate += c[i];
      }
      Adate += b-1;
      answer = MM[Adate %7];

      return answer;
  }
}