Programmers/Level 1
[Javascript] 프로그래머스 : 2016년
emayom
2021. 8. 14. 13:44
[Javascript] 프로그래머스 Level 1 _ 2016년
👇🏻
👇🏻
시행착오
( + 코드를 작성하면서든 생각들.)
1.
처음엔 단순하게 Date() 함수를 이용해 월과 일을 입력해 요일 배열에서 결과 값을 반환하도록 했다.
하지만 이렇게 하면 정확성 테스트에서 통과가 되지 않는다!
function solution(a, b) {
const days = ["SUN", "MON", "TUE", "WEND", "TURS", "FRI", "SAT"]
const date = new Date(2016, a-1, b);
return days[date.getDay()];
}
2.
문제를 살펴보면 2016년 1월 1일은 금요일이라는 문장이 있다.
그렇다면 해당 일이 2016년의 몇 번째 날인지를 알고, cnt%7의 나머지를 알게 된다면 요일을 구할 수 있다!
하지만 이렇게 해도 13번의 테스트에서 통과가 되지 않았다
ㅠㅠ 알고 보니 months에 8월을 빼먹었다,,,! 🤓
function solution(month, day) {
let cnt = 0;
const months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
const days = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]
for(let i=0; i < month-1; i++){
cnt += months[i];
}
return days[(cnt + day) % 7];
}
3.
하지만, 테스트의 경우 윤년이라는 힌트가 있었지만
배열 없이도 알아서 해당 달의 마지막 날짜를 구했으면 싶어서 한번 더 도전했다!
겸사겸사 cnt + day의 과정을 생략하기 위해 cnt를 애초에 day로 초기화했다!
통통통!
function solution(month, day) {
let cnt = day;
const days = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]
for(let i=1; i < month; i++){
const date = new Date(2016, i, 0);
cnt += date.getDate();
}
return days[cnt % 7];
}
오랜만에 풀어본 프로그래머스 ㅎㅎㅎㅎㅎㅎㅎㅎ
한동안 이것저것 하느라 소홀히 한 것 같다.
문제를 처음 보면 항상 못할 것처럼 느껴지는데
이리저리 찾다 보면 풀어지는 게 여전히 신기하다.
⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :) ⚠️
*** 혹시라도 잘못된 정보가 있다면 언제든지 알려주시면 감사하겠습니다 ! ***