[TIL_07.24] 코딩테스트_문제풀기

11289 단어 코테TILTIL

📝2016년

문제_2016년


💡접근방법

🙋‍♀️1월 1일로부터 a,b로 주어진 날짜까지 얼마나 지났는지 구하기

  • a-1 : 1월로부터 몇 달이 지났는지 계산
    b-1 : 1일로부터 몇 일이 지났는지 계산
  • a-1 값을 가지고 지금까지 지난 달의 일수를 모두 더함
  • 여기에 b-1 값을 더해 1월 1일부터 a월 b일까지 총 지나간 날짜를 구함

🙋‍♀️나머지 연산을 통해 요일 구하기

  • 총 지나간 날짜를 7로 나눈 나머지가 0~6까지 일때, 나머지에 따라 요일이 결정된다
  • 0 : 금요일
    1 : 토요일
    2 : 일요일
    3 : 월요일
    4 : 화요일
    5 : 수요일
    6 : 목요일

📍코드

🙋‍♀️switch case 문 사용

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        int[] year = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int month = a-1;
        int date = b-1;
        
        for(int i = 0; i < month; i++) {
            date += year[i];
        }
        date = date % 7;
        
        switch(date) {
            case 0 :
                answer = "FRI";
                break;
            case 1 :
                answer = "SAT";
                break;
            case 2 :
                answer = "SUN";
                break;
            case 3 :
                answer = "MON";
                break;
            case 4 :
                answer = "TUE";
                break;
            case 5 :
                answer = "WED";
                break;
            case 6 :
                answer = "THU";
                break;            
        }        
        return answer;
    }
}

📍코드 수정_두 번째 풀이

코드의 길이를 좀 더 줄일 수 있지 않을까?

🙋‍♀️String 배열 사용

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        int[] year = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] weeks = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int month = a-1;
        int date = b-1;
        
        for(int i = 0; i < month; i++) {
            date += year[i];
        }
        date = date % 7;
        answer = weeks[date];
        
        return answer;
    }
}

좋은 웹페이지 즐겨찾기