문제
2016년 1월 1일은 금요일입니다.
a/b/2016은 무슨 요일입니까?
두 개의 숫자 a와 b를 취하고 2016년 b월의 요일을 반환하는 함수인 해를 완성하십시오.
요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI 및 SAT입니다.
예: a=5, b=24는 5월 24일이 화요일이므로 문자열 “TUE”를 반환합니다.(제한)
- 2016년은 윤년입니다.
- a/b/2016은 진짜 날입니다.
(26.13. 또는 45.02.와 같은 날짜는 제공되지 않음)
설명
class Solution {
public String solution(int a, int b) {
String answer = "";
String() date = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
int() date_per_month = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int month_stack = 0;
for(int i = 1; i<a; i++){
month_stack += date_per_month(i);
}
month_stack += b;
while(month_stack > date.length ){
month_stack-=date.length;
}
answer = date(month_stack-1);
return answer;
}
}
Java의 Date 및 Calendar 클래스를 사용하면 이를 쉽게 해결할 수 있지만
그래도 코딩테스트니까!
라이브로 해봤습니다.
2016년 매월 날짜를 기준으로 Month_stack이 경과된 달에 합산됩니다.
또한 date.length 미만이 될 때까지 월의 날짜 -= date.length를 추가한 후.
(달력 넘기는 느낌)
마지막으로 moth_stack -1인 이유는 1월 0일이 없기 때문입니다.
주어진 날짜의 요일을 얻으려면 위의 코드를 실행하십시오. (2016년 한정)
문제 소스
https://school.programmers.co.kr/learn/challenges?order=recent&languages=java
코딩 테스트 실습 | 프로그래머 학교
개발자 취업의 필수 관문인 프로그래밍 시험을 철저히 연습하고 준비할 수 있는 문제를 모두 커버!
프로그래머가 선택한 문제 유형을 파악하고 기술을 연마하세요!
school.programmers.co.kr