JS, 프로그래머스 - K번째수
문제를 한 번으로 푸는 것으로 끝나는 것이 아닌 좀 더 나은 코드로 바꿔보자는 마음으로 하루 한 개씩 꾸준히 풀고 있는 코테문제. 가독성에 대해 느낀 점이 생겨 갱신!!
https://school.programmers.co.kr/learn/courses/30/lessons/42748
문제는
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.
로 푸는것은 금방 풂 배열을 리턴하는 문제로 map을 사용하고 JS에 내장되어 있는 함수를 이용하여 메서드 체이닝으로 연결해 풂
function solution(array, commands) {
return commands.map(x => array.slice(x[0]-1,x[1]).sort((a,b)=>a-b)[x[2]-1])
}
한 줄짜리 정답이 나옴 이렇게 해도 문제가 없겠지만 메서드 체이닝으로 연결되어 있으니 오히려 보기가 복잡해 보이고 매개변수도 하나로 x로 통일하여 뽑았으니 가독성이 떨어짐
function solution(array, commands) {
return commands.map(([i,j,k]) => {
return array
.slice(i-1, j)
.sort((a, b)=>a-b)[k-1]
})
}
가독성을 높이고자 문제에 나와있는 i, j, k를 매개변수로 살리고 줄 수가 늘어날지라도 .하는 분기마다 엔터를 쳐주어 읽기 쉽게 코드를 변경
😉🤔
코테를 여러 번 다른 방법으로 푼 후 다른 사람의 풀이를 보면 나와는 다르게 푼 방법이 여러 개 보이는데 이때 문제보다 자신이 생각한 초점이 다른 것을 볼 수 있음 한 줄짜리로 최대한 짧게 만들려는 사람도 있고 속도를 우선으로 생각하시는 분도 있으며 가독성이 높인(혹은 본인이 보기 편하게) 코드도 있음 나는 첫 번째는 속도를 우선시하고 있는데 프로젝트를 하면서는 가독성이 떨어지면 흠... 이건 좀 아니지 않나...? 협업할 때 좋지 못한 거 같아 하면서 더 좋은 변수명은 없을지, 코드를 길게 쓰는 것보다는 보기 편하게 했던 것이 떠올랐음 물론 코테는 문제를 어떻게 풀지 메모리와 속도를 더 적고 빠르게 하는 것이 중요하지만 두 개를 분리하는 것이 더 이상하다는 것을 깨닫게 됨 코테를 풀면서도 가독성이 챙기면 생각과 행동이 몸에 익숙하게 되고 녹아든 것이 그대로 코드에 나타날 테니 앞으로 문제를 풀면서 가독성을 한 번 더 생각해 봐야겠음