코딩 테스트/test_javaScript

[코딩테스트/javaScript] 2016년

ijooha 2025. 1. 13. 11:17

우선 요일 배열을 만들어주고, 한달에 며칠씩 있는지에 대한 배열을 만들어 줬다.

2016년 1월 1일은 금요일부터 시작되기 때문에, (인덱스 편의 상) 목요일부터 시작되는 배열로 만들었고,

모든 일수를 더하여 7로 나눈 나머지 인덱스를 day 배열에서 뽑아오는 형태

function solution(a, b) {
    const day = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']
    const lastD = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    if (a > 1) {
        let th = (lastD[a-2] + b) % 7
        return day[th]
    } else {
        return day[b % 7]
    }
}

틀렸다.

월별로 누적을 안시켰다! reduce를 사용해보겠음..

 

reduce를 시키려고 하니, 애초에 마지막달도 계산하기 편하게 바꾸면 좋겠다는 생각이 들어 바꿨다.

그리고 최대한 간단하게 작성해봄 

function solution(a, b) {
    const day = ['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED']
    const lastD = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    let days = lastD.slice(0,a).reduce((a,b) => a+=b) + b
    return day[days % 7];
}

 

더보기

코드를 잘 짜는 방법이 뭔지 궁금하다. 잘 정리된 코드가 뭘까?

무조건 짧다고 해서 좋은 건 아닌 거 같은데,

어느정도에서 끊어줘야 가독성이 좋은지 고민된다