프로그래머스 2016년 (javascript)

이진우·2022년 7월 3일
0

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

1. 날짜를 불러오는 new Date에 매개변수를 입력해 요일숫자값을 구한다

2. 요일을 변수에 배열로 담아주고 구한값에 인덱스번호로 불러오게끔 값을 수해서 return해준다.

function solution(a, b) {
    
    let answer = '';
    let dateList = ['SUN','MON','TUE','WED','THU','FRI','SAT']
    let dateFn = new Date('2016/'+a+'/'+b).getDay()
    for (let i=0; i<=6; i++){
        if(i===dateFn){
            answer += dateList[i]
        }
    }
    
    return answer;
}

이렇게 풀었는데 웬걸...유효성검사에서 시간이 너무 오래걸리는 것이었다..👀
그래서 뭔가 불필요한 연산이 있겠구나 싶어서 'for문에서 바로 값이구해지면 return을 해버리자!!'
그렇게 해서 나온결과는
.
.
.
.
.
.

let answer = '';
return answer

이 두가지 코드를 지우고 반복문에서 바로 return을 시켜주니 훨씬 빠른 코드가 작성이 되었다
불필요하게 전역변수에 옮겨담고 return을 해주기보다 반복중 원하는값이 나올때 바로 return을 해줘서 연산속도가 훨씬 빠르게 나온것 같다😆


다른분의 코드를 참고한것인데
이렇게 짧은코드로도 값을 나타낼 수 있으니 코드를 간결하게 할 수 있다면 그렇게 하고 그렇다고 무조건 짧기만한게 아닌 상황에 맞는 코드를 짤 수 있는 개발자가 되도록 노력해야겠다...🙌🏻

profile
초보개발자의 개발일기

0개의 댓글