코딩 테스트 실습 – 2016 | 프로그래밍 스쿨 (programmers.co.kr)
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr
문제 설명
2016년 1월 1일은 금요일입니다. a/b/2016은 무슨 요일입니까? 두 개의 숫자 a와 b를 취하고 2016년 b월의 요일을 반환하는 함수 솔루션을 완성하십시오. 요일의 이름은 일요일부터 토요일까지입니다. 이들은 SUN, MON, TUE, WED, THU, FRI 및 SA입니다.
예: a=5, b=24는 5월 24일이 화요일이므로 문자열 “TUE”를 반환합니다.
제한
- 2016년은 윤년입니다.
- a/b/2016은 진짜 날입니다. (26.13. 또는 45.02.와 같은 날짜는 제공되지 않음)
설명
1. 1월 1일은 금요일에 시작하므로 배열일은 금요일에 시작합니다.
2. for 문을 a만큼 반복하고 a-1월부터 몇 일까지 있는지 계산하고 b를 더합니다.
3. 예를 들어 5월 24일까지의 날짜를 모두 더하고 7로 나눈 나머지를 찾으면 days 배열에서 5월 24일이 어느 요일인지 알 수 있습니다.
class Solution {
public String solution(int a, int b) {
String answer = "";
String() days = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int() months = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day = 0;
for (int i = 0; i < (a - 1); i++) {
day += months(i);
}
day += (b - 1);
answer = days(day % 7);
return answer;
}
}