Problem Solving/프로그래머스

[프로그래머스/JavaScript] 2016년

세고래 2022. 10. 23. 18:10

https://school.programmers.co.kr/learn/courses/30/lessons/12901

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1) 풀이

이 문제는 우선 두개의 배열을 먼저 만들었다

하나는 요일을 출력하기 위해 요일 출력문구를 담아놓은 배열(days)이고, (이 배열은 금요일부터 목요일의 순으로 만듦. 1월 1일이 금요일이라는 설정때문에!)

다른 하나는 12개월동안의 한달의 날짜 수(cal)이다.

 

우선 인자로 받는 월, 즉 a 이전 달까지 날짜 수를 더해준다.

배열로 돌리면 금방 돌리고, 바로 거기에 ~일, 을 나타내는 b를 더해준다.

그렇다면, 1월 1일을 포함하여 인자로 받은 날짜까지 흐른 총 일수가 더해지게 되는데,

여기에서 1을 빼주고 (1월 1일을 기준으로 하기 때문에 1은 빼준다. 1월 1일이 금요일일 경우 거기에서 7을 더한

1월 8일이 다시 금요일이기 때문에) 그것을 %를 이용해 7로 나눈 나머지의 값을 구하고 그 값을

days의 배열 인덱스로 넘겨 답을 리턴하면 된다

 

2) 최종 소스코드
function solution(a, b) {
    const days = ["FRI","SAT","SUN","MON","TUE","WED","THU"];
    const cal = [31,29,31,30,31,30,31,31,30,31,30,31];
    let sum = 0;
    for(let i=0;i<a-1;i++){
        sum+=cal[i];
    }
    sum+=b;
    return days[(sum-1)%7];
}
728x90