Javascript 알고리즘 문제를 풀어보고 싶어서 Programmers 코딩테스트에 도전.. 역시 나 답게(?) 몇 시간의 삽질 끝에 답을 구했다.

문제 설명

문제 설명

나의 풀이

처음에는 array의 길이만큼 for문을 돌리고 또 commands의 길이만큼 반복하는 중첩 for문을 돌려서 slice, sort 함수를 사용하는 쪽으로 해결하려 했었고, 당연히 삽질만 반복할 뿐이었다. 결국 for문 없이 forEach 함수로 해결.. 다른 것보다 sort 함수에 대해 더 알아보고 이해되었던 문제 풀이였다고 느낀다.

1
2
3
4
5
6
7
8
9
10
11
function solution(array, commands) {
  let answer = [];

  commands.forEach(a => {
    const arr = array.slice(a[0] - 1, a[1]).sort((a, b) => a - b);
    answer.push(arr[a[2] - 1]);
  });

  return answer;
}
solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]]);

결과 채점 후 타인의 풀이를 보니 나는 그동안 뭐 했나 싶을 정도…

Hero image from Alltechbuzz