[Python/Programmers] K번째 수

정나린·2022년 3월 4일

1. 난이도: 프로그래머스 Level 1

2. 문제요약:

  • 리스트(배열)를 slicing하고 indexing하라.
  • 리스트(배열)를 조건에 맞게 sorting하라.

3. 문제핵심: 리스트(배열) 메서드를 잘 활용할 수 있는가

코드

def solution(array, commands):
    answer = []
    for command in commands:
        arr = array
        arr = arr[command[0]-1:command[1]]
        arr.sort()
        answer.append(arr[command[2]-1])
    return answer
  • commands는 1개 이상의 배열로 이뤄진 2차원 배열이다.
  • 따라서 for문을 활용해 하나씩 접근한다.
  • commands의 1차원 배열(코드의 command)들은 같은 array에 대한 인덱스 정보이므로, array자체는 손상되면 안된다.
  • for문의 초입에 arr라는 새로운 변수에 array를 복사해준다.
  • command는 0부터 시작하는 인덱스 규칙을 따르지 않고, 1부터 시작하므로 이를 감안하여 슬라이싱을 한다.
  • 문제에서 오름차순 정렬을 요구했으므로 sort 메소드를 사용한다.

느낀점

어차피 for문을 돌면서 command[0]-1, command[1], command[2]-1는 반복된다.
가독성을 높이기 위해 아래와 같이 변수에 할당하는 것도 좋을 것 같다.

  • start = command[0] - 1
  • end = command[1]
  • k = command[2] - 1

0개의 댓글