반응형
이전 포스트에 이어
프로그래머스 2016년을 JavaScript로 풀어보겠다.
다른 언어 풀이를 보고 싶다면 아래 링크를 확인해보자
2022.08.20 - [Coding Test/Python] - [프로그래머스] 2016년 Python Code
2022.08.20 - [Coding Test/C++] - [프로그래머스] 2016년 C++ Code
2022.08.20 - [Coding Test/Go] - [프로그래머스] 2016년 Go Code
문제
구현
구현은 2016년 안에서만 계산하면 되기 때문에
모든 월의 일 수와 요일들을 배열에 넣고
결괏값을 계산했다.
코드로 보겠다.
코드
function solution(a, b) {
var day = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
var month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var sum;
if(a < 2) {
sum = b - 1;
} else {
sum = month.slice(0, a - 1).reduce((a, b) => a + b) + b - 1;
}
return day[sum % 7];
}
a-1까지 반복문을 돌아서
month를 sum 해서 추가하고 일을 추가해서 계산할 수 있게 했다.
여기서 reduce를 사용했는데 reduce에 대한 추가 설명과
비슷한 문제를 풀어보고 싶으면 아래 링크를 확인해보자
2022.07.29 - [Coding Test/JavaScript] - [프로그래머스] 내적 JavaScript Code
day 배열은 mod(%) 연산과 맞게 하기 위해
금요일부터 배열에 넣었다.
다른 풀이
JS에서도 출제자의 의도를 회피하기 위해 days를 써서 풀어보았다
function solution(a, b) {
var arr = ['SUN','MON','TUE','WED','THU','FRI','SAT'];
var date = new Date(`2016-${a}-${b}`);
var day = date.getDay()
return arr[day];
}
Date 객체를 써서 아주 간단하게 풀 수 있다.
이 방법도 여러 연도가 있다면 훨씬 괜찮은 방법이고 아주 간단하게 풀 수 있다.
코딩 테스트라는 특수한 환경이 아니라면 Date 객체를 사용하는 게 일반적이긴 하다.
반응형
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기 JavaScript Code (0) | 2022.08.23 |
---|---|
[프로그래머스] 성격 유형 검사하기 JS Code (7) | 2022.08.19 |
[프로그래머스] 약수의 개수와 덧셈 JavaScript Code (0) | 2022.08.17 |
[프로그래머스] K번째수 JavaScript Code (4) | 2022.08.16 |
[프로그래머스] 체육복 JavaScript Code (0) | 2022.08.10 |
댓글