1차 시도 - 9번, 13번 케이스 실패
// 9번, 13번 테스트 케이스 실패
function solution(a, b) {
var mon = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
const acc_mon = [0];
for (let i = 0; i < mon.length - 1; i++) {
acc_mon.push(acc_mon[i] + mon[i]);
}
return day[((acc_mon[a - 1] + b) % 7) - 1];
}
테스트 및 분석
/**
* 2016년.test.js
*/
const solution = require("./2016년");
test('5월 24일', () => {
expect(solution(5, 24)).toBe("TUE")
});
test('Monday', () => {
expect(solution(1,4)).toBe("MON")
});
test('Tuesday', () => {
expect(solution(1,5)).toBe("TUE")
});
test('Wednesday', () => {
expect(solution(1,6)).toBe("WED")
});
test('Thursday', () => {
expect(solution(1,7)).toBe("THU")
});
test('Friday', () => {
expect(solution(1,1)).toBe("FRI")
});
test('Saturday', () => {
expect(solution(1,2)).toBe("SAT")
});
test('Sunday', () => {
expect(solution(1,3)).toBe("SUN")
});
Thursday 에서 THU 가 아니라 undefined 가 나와 문제가 생기는 것을 확인했다.
확인 결과 코드 마지막 줄에서 문제를 발견했다.
return day[((acc_mon[a - 1] + b) % 7) - 1];
1월 1일이 FRI 인 관계로 day 배열의 시작을 FRI 로 두고 1월 1일의 경우 1이 나오므로 배열 인덱스 0에 맞춰주기 위해 -1 을 해줬는데, 그 결과 목요일의 경우 num % 7 이 0이 되고, 0에 -1을 해준 결과 목요일은 acc_mon[-1] 에 접근해 undefined 가 나온 것이다.
2차 시도 - 성공
function solution(a, b) {
var mon = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var day = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];
const acc_mon = [0];
for (let i = 0; i < mon.length - 1; i++) {
acc_mon.push(acc_mon[i] + mon[i]);
}
return day[((acc_mon[a - 1] + b) % 7)];
}
테스트 결과를 기반으로 day 배열의 시작을 THU로 바꿔주고 마지막 줄의 -1을 빼주는 것으로 해결했다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바스크립트][Level2] 큰 수 만들기 (0) | 2022.01.08 |
---|---|
[프로그래머스][자바스크립트][Level1] 문자열 내림차순으로 배치하기 (0) | 2022.01.06 |
[프로그래머스][자바스크립트][Level1] 두 개 뽑아서 더하기 (0) | 2022.01.06 |
[프로그래머스][자바스크립트][Level1][카카오] 실패율 (0) | 2022.01.05 |
[프로그래머스][자바스크립트][Level2] H-Index (0) | 2022.01.04 |
댓글