본문 바로가기

코딩테스트/프로그래머스

[Java][프로그래머스-코딩테스트 level1] 2016년

o 요구사항

두 자연수를 인자값으로 받아 요일을 반환하기

일주일은 7일이므로 월요일부터 일요일까지 7개중 1개를 결과값으로 return하게 된다

 


o 코드진행

매개값으로 주어지는 월(a)과 일(b)을 받아 총 지난 총 일자를 구한뒤, 7로 나눠 요일을 구한다

 

 

o 코드설계

월별로 날짜개수를 항목으로 하는 정수형 배열(intArr)을 생성
for 반복문을 사용하여 a값 전까지  배열intArr의 항목 더하고 b값으로 일자를 더한다
2016년 첫 시작은 금요일이므로 적당한 숫자를 넣어 시작요일을 맞춰준다
일주일은 7일이므로 7로 나눈 나머지를 구하고 switch() 구문을 이용하여 경우의 수 분기하기

 

 

o 완성코드

public class Solution {
	public String solution(int month, int day) {
		int[] intArr = new int[] {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int total = 0;
		for(int i=0; i<month-1; i++) {
			total += intArr[i];
		}
		total += day;
		total += 4;		//첫 요일 조정
		
		final String d0 = "SUN";
		final String d1 = "MON";
		final String d2 = "TUE";
		final String d3 = "WED";
		final String d4 = "THU";
		final String d5 = "FRI";
		final String d6 = "SAT";
		String answer = "";
		
		switch (total%7) {
		case 1:
			answer = d1;
			break;
		case 2:
			answer = d2;
			break;
		case 3:
			answer = d3;
			break;
		case 4:
			answer = d4;
			break;
		case 5:
			answer = d5;
			break;
		case 6:
			answer = d6;
			break;
		default:
			answer = d0;
			break;
		}
		return answer;
	}
}