[프로그래머스] 2016년

jmjgirl·2023년 10월 10일
0

프로그래머스

목록 보기
6/47
post-thumbnail

📚 문제 설명

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일같은 날짜는 주어지지 않습니다)

🔎 입출력 예


💻 코드

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

📖 Solution

처음 문제를 풀때 1월 1일이 금요일이라는 말을 듣고 배열 첫번째를 금요일부터 시작해야겠다 생각했고 그래서 date에 7을 나눠서 요일을 찾아야지! 까지는 생각을 했는데 month를 어떻게 계산해야할지를 생각하지 못했다... 바보...
이렇게 간단한 문제인지를 몰랐다...


일단 String 배열에 요일을 저장해두었다. 금요일부터 시작한 이유는 1일이 금요일이기 때문이다. 그리고 int 배열에는 월별 일수를 저장했다. 윤년이니까 2월은 29일까지이다.

모든 날짜를 date라는 변수에 더해주면 되는데 먼저 월을 더해주고 나머지 일을 더해주면된다.
이때 b-1을 더한 이유는 금요일이 index 0이므로 -1을 해줘야하기 때문이다.
그리고 나서 일주일인 7로 나누면 요일을 알 수 있다.

profile
개발자로 가는 👣

0개의 댓글