-
[프로그래머스 코딩테스트] K번째수 (Python)코딩테스트 2020. 7. 12. 16:05
https://programmers.co.kr/learn/courses/30/lessons/42748?language=python3
def solution(array, commands): answer = [] for command in commands: i = command[0]-1 j = command[1] k = command[2]-1 x = array[i:j] x = sorted(x)[k] answer.append(x) return answer
commands에는 [[i,j,k],[i,j,k],[i,j,k]] 와 같이 다차원리스트 형태로 array에서 답을 뽑아내기 위한 인덱스 리스트가 들어옵니다.
array의 i번째부터 j번째까지 리스트를 추출하고 k번째 원소를 추출해서 answer에 담아서 리턴해야 합니다.
문제에는 i, j, k가 0번부터 시작하는 것이 아니라 1번부터 시작합니다. 하지만 프로그래밍 언어에서 인덱스는 0부터 시작하기 때문에 i, j, k 값을 조정해줘야 합니다.
(문제 : 1번째 = 프로그래밍 언어 : 0 번째) 이므로 i와 k값에는 1을 빼서 할당했습니다. j의 경우 미만 값으로 사용하여 건들지 않았습니다.
인덱스 값을 조정해 준 이후에는 array의 i부터 j미만의 값을 추출해서 x에 할당했습니다. 그리고 x를 정렬한 후에 k번째 값을 추출해서 answer에 더한 후 리턴했습니다.
def solution(array, commands): answer = [] for command in commands: answer.append(sorted(array[command[0]-1:command[1]])[command[2]-1]) return answer
첫번째 코드는 가독성을 위해 변수들을 각각 구분했지만, 위와 같이 두 줄로 처리할 수 도 있습니다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스 스택/큐] 주식가격 (0) 2020.08.07 [백준 2798 /python] 블랙잭 (0) 2020.08.07 [프로그래머스 SQL 테스트] SELECT (0) 2020.08.06 [백준 2920] 음계 - python3 (0) 2020.07.13 [프로그래머스 level2] 포켓몬 - python (0) 2020.07.13