반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/12901
코딩테스트 연습 - 2016년
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까
programmers.co.kr
- 해당 날짜 바로 전 달(month)까지의 날짜들 수를 세고
- 해당 날짜의 일(day) 만큼 더해주면 해당 날짜까지의 모든 날짜의 수
- 요일 구하기
- 모든 날짜의 수 % 7
- 나머지에 따라 요일이 정해짐
class Solution {
public String solution(int a, int b) {
String answer = "";
// 2016년 1월 1일은 금요일이라고 했으니까 금요일부터 시작해보자
int month[] = {31,29,31,30,31,30,31,31,30,31,30,31}; // 1월부터 월별 날짜 수
String[] weekDay = {"THU","FRI","SAT","SUN","MON","TUE","WED"}; // 요일 문자
int day = 0;
// 이제 뭘할거냐면 입력받은 날짜까지의 day수(날짜들 수)를 계산할건데
// 일단 만약에 5월이면 4월까지의 날짜를 쭉 세줌 (달별 날짜수는 정해져있으니까 먼저 계산해주기)
for(int i = 0; i < a - 1; i++) { // 월-1 (일단 4월까지 세니까)
day = day + month[i]; // 31 + 29 + 31 + 30
}
// 이제 5월 24일이면 24를 더해주면 5월 24일까지의 날짜 수가 나옴
day = day + b;
// 이제 요일을 구하면 되는데 요일은 (전체 날짜수 % 7) 했을 때의 나머지
// 목0 금1 토2 일3 월4 화5 수6
answer = weekDay[day%7];
return answer;
}
}
반응형
LIST
'JAVA > Algorithm' 카테고리의 다른 글
[프로그래머스/java] 같은 숫자는 싫어 (0) | 2020.10.23 |
---|---|
[프로그래머스/java] 가운데 글자 가져오기 (0) | 2020.10.23 |
[프로그래머스/java] K번째수 (0) | 2020.10.21 |
[프로그래머스/java] 모의고사 (0) | 2020.10.21 |
[프로그래머스/java] 완주하지 못한 선수 (0) | 2020.10.21 |