본문 바로가기
코딩테스트/프로그래머스 1단계

프로그래머스 1단계 - 2016년

by SICDev 2021. 4. 22.
반응형

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) {
        //1~12월까지 일자 수
		int[] Month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		//1월1일은 금요일이기때문에 금요일부터 index를 시작한다.
		String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
		
		//만약에 a가 3 b가 10이라고한다면 
		//3월 10일의 요일을 출력한다.
		//a=3 이기때문에 2월까지의 모든 일자수를 더해준다. ( 총 60일 )
		//b=10 이기때문에 2월까지의 모든 일자수에서 10일을 더해준다. (총70일)
		//그러면 3월10일까지의 총일자수가 나온다.
		//요일은 7개이기때문에 총일자%7 의 나머지가 해당 요일이 된다.
		
		int totalDay = 0;
		
		//파라미터인자로받은 a의 이전 달까지 for문을 돌린다.
		for(int i=0; i<a-1; i++){
			totalDay += Month[i];
		}
        //-1을 해주지 않으면 1월1일도 하루 지난것으로 인식하기때문에
		totalDay += b-1;
        String answer = day[totalDay%7];
        return answer;
    }
}
반응형