Hayden's Archive
[알고리즘] 프로그래머스 : 2016년 본문
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12901
내가 작성한 코드
1월부터 12월까지의 마지막날을 배열 date에 담았고 각 요일을 배열 day에 담았다. 2016년 1월 1일이 금요일이므로 7로 나누었을 때의 나머지가 1이 되는 요일을 금요일로 잡았기에 배열 day의 0번째 값은 목요일이 된다. 먼저 a의 값부터 1~12의 범위로 걸러주고, b의 값은 0보다 크고 배열 date에서의 마지막날보다 작거나 같은 범위로 거른다. 그 뒤 달이 1월일 때는 일을 7로 나눈 나머지로 배열 day에서 해당되는 값을 저장하고, 달이 1월이 아닐 경우에는 직전 달들의 일수 합을 구하여 다 더하고 해당 월의 일수를 합하여 7로 나눈 나머지를 구한 뒤 배열 day에서 해당되는 값을 저장한다.
class Solution {
public String solution(int a, int b) {
String answer = "";
int totalDate = 0;
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String[] day = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
if(a>0 && a<13){
if(b>0 && b<=date[a-1]){
if(a==1){
answer = day[b%7];
}
else{
for(int i=0; i<a-1; i++){
totalDate+=date[i];
}
answer = day[(totalDate+b)%7];
}
}
}
return answer;
}
}