본문 바로가기
Algorithm/프로그래머스

[프로그래머스] K번째수(level 1) Python 문제 풀이

by daewooki 2021. 7. 17.
반응형

프로그래머스 고득점 Kit 중 가장 쉬운 문제가 아닐까 싶다.

 

문제 링크: 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

 

문제

 

문제는 읽기 매우 쉬웠고, 잘 읽어보면 문제의 제한사항은 크게 중요하지 않은 것 같다.

 

배열array가 주어졌을 때 i번째~j번째 숫자까지 정렬한 후 k번째에 있는 수를 구하는 문제이다.

 

배열 array가 주어지고 [i, j, k]를 원소로 가진 2차원 배열 commands에 따라 원하는 숫자들을 뽑아서 결과 리스트에 추가 시켜주면 된다

 

문제 해결 방법

1. array에서 commands의 길이 만큼 돌면서 i, j에 해당하는 숫자를 빼온다.

2. 1에서 빼온 리스트를 정렬하고 k번째에 해당하는 원소를 뽑아 result 배열에 추가한다.

 

간단!!

 

 

코드

1
2
3
4
5
6
def solution(array, commands):
    answer = []
    for i in commands:
        temp_list = array[i[0]-1:i[1]]
        answer.append(sorted(temp_list)[i[2]-1])
    return answer
cs

 

temp_list를 뽑고 정렬한 후에 해당하는 원소를 뽑아오면된다.

 

고득점 Kit치고 매우 쉬운 문제였다. 

 

다른 사람 풀이에 거의 한 줄로 구현한 것이 있었는데, 역시 갓이썬이었던듯.

 

다른사람의 풀이

1
2
3
def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
 
cs

lambda함수를 써서 한번에 처리를 하도록 했다. 

역시 갓이썬^^'

 

 

해당 문제는 매우 기초적인 문제로 고득점 Kit에는 빠져도 되지 않나 싶다.ㅎㅎ

반응형

댓글