V-logue

[항해99] 프로그래머스 - 2016 본문

항해 99/프로그래머스 Algo

[항해99] 프로그래머스 - 2016

보그 2022. 5. 14. 20:44

대충 이런 문제다.

 

function solution(a,b) {

    var week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
    var date = new Date(`2016,${a},${b}`);
    let day = date.getDay();
    return week[day];
    
}

나는 date 객체로 이 문제를 풀었는데, 다 풀고나니 date객체가 다 알아서 해주는데 이건 알고리즘 문제를

푸는게 아니라, 객체 메소드 연습을 하는거라는 글을 보게됐다.

 

뭐가 맞는건지는 잘 모르겠지만, 일단 풀었으니 설명을 하자면

 

먼저 date객체에서 new Date( )를 이용하여 날짜와 시간을 표현할 수 있는데 다음과 같다

 

new Date()
new Date(year, month, day, hours, minutes, seconds, milliseconds)
new Date(milliseconds)
new Date('date')

내가 사용한 것은 new Date(year, month, day, hours, minutes, seconds, milliseconds)인데,

 

다른 것은 몰라도 year(연), month(월), day(일)은 필수다.

 

solution(a,b)를 a월 b일로 표현하기 위해서 new Date에

 

new Date(2016, a, b)로 입력했으나 계속된 에러에 지쳐 검색해본 결과

 

템플릿 문자열인 백틱 ``을 사용하면 된다는 사실을 알게됐다.

 

new Date(`2016,${a},${b}`).getDay();
 

로 처음에 입력했으나 new Date뒤에 .getDay를 바로 붙여준다면 프로그래머스에서 오류가 날수도 있다고

누가 조언해준 결과로 나눠서 작성하게 됐다.

 

그리고 미리 잡아준 배열 week에 특정요일이 지칭된 변수인 day를 대입시키니 

 

짜잔~ 

 

월요일인 Monday가 출력된 모습이다.

실제로도 2016.05.23의 요일은 월요일인데, 한가지 주의해야 할 점은 나는 VSCode에서 작성할 때

 

function getDate(a,b) // 로 작성했는데 프로그래머스에서는
function solution(a,b) // 로 작성하지 않는다면 solution 런타임 에러가 발생한다.
 
계속 틀린 줄 알고 이상한 코드를 작성하다가 발견한 사실인데, 왜 이런일이 발생하는지는
아직 잘 모르겠다.

 

Comments