[프로그래머스] 12901 2016년
프로그래머스 level1
문제
문제 풀이
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public String solution(int a, int b) { | |
String[] day = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; | |
int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; | |
int monthSum = 0; | |
for (int i = 0; i < a - 1; i++) { | |
monthSum += month[i]; | |
} | |
return day[(monthSum + b + 4) % 7]; | |
} | |
} |
문제 리뷰
문제를 처음 접했을 때는 굉장히 어렵게 느껴졌던 문제이다.
하지만, 들여다보면 생각보다 쉬운 문제.
각 달마다 정해져 있는 일수가 있다.
2016년은 윤년이기에 2월은 29일이 된다.
배열에 각 달의 일 수를 넣어준 후, 주어진 a의 전달까지만 더해줬다.
그러면 5월이라면 4월달까지의 일 수만 더하게 된다.
그 후, 주어진 b의 값을 더하면 5월 24일까지의 일 수를 갖게 된다.
그리고 요일의 수인 7을 일 수로 나누게 되면 날짜를 갖게될 것이다.
하지만 여기서 놓치면 안되는 것이 있다.
2016년 1월 1일은 금요일입니다.
이 것으로 인해 첫 요일은 금요일부터 시작되니
일, 월, 화, 수, 목 총 5일을 더해줘야한다.
하지만, 배열은 0부터 시작하니 -1을 빼준 4를 더해주면 된다.
애초에 배열을 금요일부터 시작하는 방법도 있다.
그러면 -1만 빼주면 된다.
TMI
곧 level1 탈출!
1일 2알고리즘 완료🤓
댓글남기기