본문 바로가기
알고리즘/프로그래머스

프로그래머스 LV1. 2016년

by reumiii 2020. 8. 14.

🍀 문제

두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다.

 

제한 조건

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

입출력 예

5 24 TUE

 

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

 

 

나의 코드 😊

class Solution {
    public String solution(int a, int b) {
        int sum = 0;

        switch (a) {//1월1일부터 a월 b일까지의 총 날짜
        case 12:
            sum += 30;
        case 11:
            sum += 31;
        case 10:
            sum += 30;
        case 9:
            sum += 31;
        case 8:
            sum += 31;
        case 7:
            sum += 30;
        case 6:
            sum += 31;
        case 5:
            sum += 30;
        case 4:
            sum += 31;
        case 3:
            sum += 29;
        case 2:
            sum += 31;
        case 1:
            sum += b;
        }

        String[] days = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" };
        return days[sum % 7]; // 7로 나눈 나머지로 요일 정하기
    }
}

switch 문을 사용하여 a월 b일 까지의 날짜를 다 더했다.

총 날짜에 7를 나눈 나머지로 요일을 정해주었다.

 

 

 

멋진 다른 사람의 코드 😎

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;
  }
}

 

⭐ switch 없이 간결하게 풀 수 있었다!!

각 달에 며칠 씩 있는지 배열에 넣어

for문으로 더해 총 날짜수를 구할 수 있었다.

댓글