728x90
문제:https://programmers.co.kr/learn/courses/30/lessons/12901
public class programmers12901 {
public static void main(String[] args) {
int a = 1;
int b = 7;
System.out.println(solution(a,b));
}
public static String solution(int a, int b) {
String answer = "";
int[] month = {31, 29, 31, 30, 31, 30 ,31, 31, 30, 31, 30, 31};
String[] days = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int totaldays = 0;
for(int i = 0; i < a-1; i++){
totaldays+=(month[i]);
}
totaldays += (b-1);
answer = days[totaldays%7];
return answer;
}
}
2016년의 월/일을 입력하면 무슨 요일인지 출력하는 문제
각 달의 일수를 배열로 저장하고
1월 1일이 금요일이었기 때문에 "금, 토, 일, 월, 화, 수, 목" 순서로 배열로 저장했다.
for문을 입력받은 개월 수(a) - 1 만큼 돌려 총 일수를 더하고
총 일수에 입력받은 일수(b)-1 만큼을 더해준 뒤
%연산을 사용해 요일을 구하는 식으로 풀었다.
코드에서 (b-1)을 해준 이유는 저렇게 해주지 않으면 1월 1일을 하루 지난것으로 연산하기 때문에 결과값이 하루 더 계산되어서 나오게 된다.
예를 들어 a에 5, b에 24를 입력한 경우 실제 답은 TUE가 나와야 하지만 b-1을 해주지 않으면 그 하루 뒤인 WED가 나오게 된다.
728x90
'알고리즘' 카테고리의 다른 글
[프로그래머스] 문자열 다루기 기본 [Java/자바] (0) | 2020.04.03 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 [Java/자바] (0) | 2020.04.03 |
[프로그래머스] 체육복 [Java/자바] (0) | 2019.09.26 |
[프로그래머스] K번째 수 [Java/자바] (0) | 2019.09.25 |
[프로그래머스] 모의고사 [Java/자바] (0) | 2019.09.25 |