코딩테스트 Lv - 1 추억 점수

박상하·2024년 8월 5일
0

코딩테스트

목록 보기
31/37

최초 풀이

function solution(name, yearning, photo) {
    const answer =[]
    let obj ={}
    for(let i = 0 ; i < name.length; i++){
        obj[name[i]]=yearning[i]
    }
    for(let j = 0 ; j<photo.length; j++){
        let sum =0
        for(let k = 0 ; k<photo[j].length; k++){
            if(obj[photo[j][k]]!==undefined){
sum=sum+obj[photo[j][k]]                
            }
        }
        answer.push(sum)
    }
    return answer
}

개선한 풀이

function solution(name, yearning, photo) {
const result =[]
const obj ={}
name.forEach((item,index)=>obj[item]=yearning[index])
photo.forEach((arr,index)=>{
    let point=0
    arr.forEach((item)=>obj[item] ? point=point+obj[item]: null)
    result.push(point)
})    
    return result
}

for문안의 식별자를 i, j ,k이렇게 다양하게 사용하다보니 가독성이 좋지 않고
for문 내부에 if문이 존재해 좀 더 복잡해보인다.

그래서 forEach문으로 최대한 간결하게 사용하였고 obj를 통해 key-value로 바로 해당 값으로 접근이
가능하도록 하였다.

forEach문보다 for문이 성능이 더 좋다고 알고있는데 테스트케이스를 통과할 수준의 범위라면
forEach문이 더 가독성이 좋아보인다.

0개의 댓글