프로그래머스

프로그래머스 #2016년

링규 2022. 5. 6. 21:28

 

 

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

 

 

해결 방안

 

- 1월 1일이 금요일이므로 n월 m일이 1월 일로 부터 몇 일 뒤인지 계산하여 7로 나누어 요일을 구한다 

 

필요한 변수 

count : 일수를 계산할 int 변수 

int[] month : 각 월의 일수를 저장할 int 배열

String[] days : 요일을 저장할 String 배열

 

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        
        //count 변수 = 1월 1일로 부터 몇 일이 지났는지
        //[] = 1~12월까지 일 수를 배열로 만든것
        //[] = 요일을 배열로 만든 것 
        
        int count = 0;
        int[] month = new int[] {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30};
        String[] days = new String[] {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        
        for(int i=0; i<a; i++){
            count += month[i]; 
        } //앞 달의 일수를 모두 더하기
        
        count += b-1; 
        //1월 2일이 주어졌다고 가정했을 때 for문에서 count는 그대로 0, 
        //b는 2이므로 -1 을 해야 맞는 계산이 나온다 
        //(1월 2일은 1월 1일의 1일 후)
        answer = days[count%7];
        return answer;
    }
}

 

 

통과

 

 

이 문제는 다른 사람의 풀이 보는 재미가 있었다 ㅎㅎ 

캘린더 함수로 푸신 분도 계시고 와 이럴수가 할 정도로 수작업 하신분도 계시고 ... 

나랑 같은 알고리즘으로 푸셨는데 사소한 부분들은 또 다른 게 재밌었다