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"를 반환하세요.
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을 해줘서 연산속도가 훨씬 빠르게 나온것 같다😆
다른분의 코드를 참고한것인데
이렇게 짧은코드로도 값을 나타낼 수 있으니 코드를 간결하게 할 수 있다면 그렇게 하고 그렇다고 무조건 짧기만한게 아닌 상황에 맞는 코드를 짤 수 있는 개발자가 되도록 노력해야겠다...🙌🏻