본문으로 바로가기

2016년

category Algorithm/백준+프로그래머스+SWEA+정올+구름 2021. 4. 16. 16:46

[ 문제 설명 ]

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

 

[ 입출력 예 ]

a b result
5 24 "TUE"

 


class Solution {

    public String solution (int a, int b) {
    
        String answer = "";
        String day[] = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
        int totalDay = 0;
        
        for(int i = 1; i < a; i++) {
        
        	if (i < 8) { // 1~7월은 홀수 달이 31일까지 있고, 짝수 달이 30일까지 있음
        		if(i == 2)
        			totalDay += 29;
        		else if(i % 2 != 0)
        			totalDay += 31;
        		else
        			totalDay += 30;
        	}
       
        	else { // 8~12월은 홀수 달이 30일까지 있고, 짝수 달이 30일까지 있음
        		if (i % 2 != 0)
        			totalDay += 30;
        		else
        			totalDay += 31;
        	}
        }
        
        totalDay += b;
        
        
        answer = day[totalDay % 7];
        
        return answer;
    }
}

 

먼저, 입력받은 전 달까지의 일 수와 입력받은 달의 일 수를 더하는 방식으로 총 일 수를 구했습니다.

예를 들어, 5월 24일을 입력받았다면 4월까지의 일 수에 24일을 더했습니다.

 

총 일 수를 구한 후, 일주일이 7일이기 때문에 7로 나눈 나머지로 요일을 판별했습니다.

1월 1일이 금요일 이기 때문에, 7의 배수인 7일, 14일, 21일, ... 은 목요일 입니다.

따라서, 요일을 저장한 배열의 인덱스와 총 일 수를 나눈 나머지를 맞춰주기 위해, 목요일을 0번 인덱스로 두어 배열을 선언했습니다.

'Algorithm > 백준+프로그래머스+SWEA+정올+구름' 카테고리의 다른 글

수박수박수박수박수박수?  (0) 2021.04.16
서울에서 김서방 찾기  (0) 2021.04.16
같은 숫자는 싫어  (0) 2021.04.16
K번째수  (0) 2021.04.16
가운데 글자 가져오기  (0) 2021.04.16