자바스크립트 코딩테스트 강좌, K번째 수 구하기

안녕하세요! 오늘은 자바스크립트로 코딩테스트 문제를 해결하는 방법에 대해 알아보도록 하겠습니다. 이번 강좌의 주제는 ‘K번째 수 구하기’입니다. 이 문제를 통해 우리는 배열의 정렬 및 특정 인덱스의 값을 찾는 방법을 배울 것입니다. 문제의 내용과 해결 과정을 단계 별로 살펴보겠습니다.

문제 설명

주어진 배열에서 특정 조건을 만족하는 K번째 수를 찾아야 합니다. 구체적인 문제 설명은 아래와 같습니다.

문제: K번째 수 구하기

당신은 배열과 정수 K가 주어졌을 때, 배열을 오름차순으로 정렬한 후 K번째로 작은 수를 반환해야 합니다.

입력:
- 첫 번째 줄: 정수 N (배열의 길이), 정수 K (찾고자 하는 수의 위치)
- 두 번째 줄: N개의 정수로 이루어진 배열

출력:
- K번째 작은 수

예시

  • 입력: 5 2
  • 배열: [3, 1, 2, 5, 4]
  • 출력: 2

위의 입력값에서, 배열을 오름차순으로 정렬하면 [1, 2, 3, 4, 5]가 되고, 2번째 수는 2입니다.

문제 해결 과정

문제를 푸는 데 필요한 단계는 다음과 같습니다.

  1. 입력값을 읽고 배열과 K를 설정합니다.
  2. 배열을 오름차순으로 정렬합니다.
  3. K번째 인덱스의 값을 출력합니다.

1단계: 입력값 읽기

JavaScript의 경우, prompt 함수를 사용하여 입력값을 받을 수 있습니다. 하지만, 코딩테스트 플랫폼에서는 주로 표준 입력을 통해 값을 읽어옵니다. 여기서는 배열을 직접 선언하여 테스트하도록 하겠습니다.


const arr = [3, 1, 2, 5, 4];
const K = 2; // K번째 수

2단계: 배열 정렬

자바스크립트에서는 배열을 정렬하기 위해 sort 메소드를 사용할 수 있습니다. 이 메소드는 기본적으로 문자열 정렬을 하기 때문에, 숫자 정렬을 위해 콜백 함수를 제공해야 합니다.


arr.sort((a, b) => a - b);

위 코드는 배열을 오름차순으로 정렬합니다. 즉, 작은 수부터 큰 수로 나열합니다.

3단계: K번째 수 반환

배열 인덱스는 0부터 시작하므로, K번째 수를 가져오기 위해서는 K-1을 인덱스로 사용해야 합니다. 따라서 다음과 같이 할 수 있습니다.


const kthNumber = arr[K - 1];
console.log(kthNumber); // 출력

전체 코드

이제 모든 단계를 종합하여 전체 코드를 작성해보겠습니다.


function findKthNumber(arr, K) {
    // 배열을 오름차순으로 정렬
    arr.sort((a, b) => a - b);
    
    // K번째 수 반환 (K는 1-based 인덱스이므로 K-1 사용)
    return arr[K - 1];
}

// 테스트
const arr = [3, 1, 2, 5, 4]; // 예시 배열
const K = 2; // K번째 수
const result = findKthNumber(arr, K);
console.log(result); // 결과 출력: 2

결론

이번 강좌에서는 ‘K번째 수 구하기’ 문제를 해결해보았습니다. 배열을 정렬하고 특정 위치의 값을 찾는 과정에서 자바스크립트의 배열 메소드인 sort를 활용하는 방법을 배웠습니다. 알고리즘 문제를 풀 때에는 문제를 잘 이해하고, 작은 단위로 나누어 해결하는 것이 중요합니다. 다음에는 더 다양한 문제를 가지고 찾아오겠습니다. 감사합니다!