-->

[프로그래머스] 정렬 - K번째수 (python)

정렬 - K번째수, 문제 확인

이번 문제는 정말 간단하다.

 


배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때 k번째있는 수를 구해야 함

배열 array와 [i,j,k]를 원소로 갖는 2차원 배열 commands가 주어짐

 

 

정렬 - K번째수, 문제 풀이

commands를 기준으로 반복문을 돌면서 먼저 array를 tmp에 복사한다. 그리고 i(v[0]), j(v[1])대로 tmp를 자른 후 정렬하고 k번째(v[2]-1) 값을 answer 리스트에 추가해주면 된다.

 

def solution(array, commands):
    answer=[]
    for v in commands:
        tmp=array
        tmp=tmp[v[0]-1:v[1]]
        tmp.sort()
        answer.append(tmp[v[2]-1])
    return answer

 

 

여태까지 프로그래머스 문제 중에는 제일 쉬웠던 것 같다. 이전 힙(우선순위큐) 문제 중 디스크컨트롤러를 어떻게 풀어야 할지 모르겠어서 일단 정렬로 넘어왔는데 조만간 꼭 풀이해 올리려고 한다.

 

 

 

정렬 - K번째수, 다른 사람의 풀이

i,j,k를 한꺼번에 쓸 수 있다는 것을 처음 알았다. 자주 써먹어야겠다. 그리고 정렬은 줄수도 줄일겸 sorted() 형태로 사용하는 것이 더 좋을 듯 하다.

 

def solution(array, commands):
    answer = []
    for command in commands:
        i,j,k = command
        answer.append(list(sorted(array[i-1:j]))[k-1])
    return answer

 

댓글

Designed by JB FACTORY