[ 코딩 테스트 예제 ] 07.

문제

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