Programmers/Level 1

[Javascript] 프로그래머스 : 2016년

emayom 2021. 8. 14. 13:44

[Javascript] 프로그래머스 Level 1 _ 2016년

 

👇🏻

Link_Click

 

 

👇🏻

시행착오
( + 코드를 작성하면서든 생각들.)

 


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];
}

 

 

오랜만에 풀어본 프로그래머스 ㅎㅎㅎㅎㅎㅎㅎㅎ

한동안 이것저것 하느라 소홀히 한 것 같다.

문제를 처음 보면 항상 못할 것처럼 느껴지는데

이리저리 찾다 보면 풀어지는 게 여전히 신기하다.

 


⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :)  ⚠️

***    혹시라도 잘못된 정보가 있다면  언제든지 알려주시면 감사하겠습니다  !    ***