https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

 


소스 코드

파이썬

def solution(array, commands):
    answer = []
    for command in commands:
        temp_list = array[command[0] - 1 : command[1]]
        temp_list.sort() # 재할당 필요없이 그냥 리스트가 정렬됨
        answer.append(temp_list[command[2] -1])
    return answer

 

자바스크립트

function solution(array, commands) {
    var answer = [];
    for (command of commands) {
        temp_array = array.slice(command[0] - 1, command[1])
        temp_array.sort((a, b) => a - b) // sort() 입력시 문자열 형태로 정렬됨에 유의
        answer.push(temp_array[command[2] - 1])
    }
    return answer;
}

 


풀이 과정

문제에서 시키는 대로 문자열을 자르고, 정렬하고, k번째 원소를 answer 배열에 넣으면 된다.

 

파이썬에서는 name = list[a:b] 시 list의 a ~ b-1번째 원소가 name에 들어가고

자바스크립트에서는 var name = list.slice(a, b)로 동일한 동작을 수행할 수 있다.

 

숫자의 정렬은 파이썬에서는 list.sort()로 그냥 list의 원소를 오름차순으로 정렬할수 있지만

자바스크립트에서는 array.sort() 사용시 문자열로 처리되어 정렬이 되기 때문에 원하는 대로 숫자의 대소관계로 정렬이 되지 않으므로, array.sort((a, b) => a - b)를 사용하였다.

 

+ Recent posts