Algorithm/programmers/정렬/level1/K번째 수 (with python)

📖문제

📝풀이과정

  1. commands에 있는 i, j, k 를 뽑아낸다.
  2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
  3. 2번에서 만든 새로운 배열을 정렬한다.
  4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.

⌨코드

def solution(array, commands):
    answer = list()
    for ijk in commands:
        # 1. commands에 있는 i, j, k 를 뽑아낸다.
        i = ijk[0] - 1
        j = ijk[1]
        k = ijk[2] - 1
        
        # 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
        new_arr = array[i:j]
        # 3. 2번에서 만든 새로운 배열을 정렬한다.
        new_arr.sort()
        
        # 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
        answer.append(new_arr[k])
    
    return answer

💡새로 알게된 문법

for문에서 2차원 리스트에 있는 값들을 한꺼번에 꺼내고 싶다면

  • 위 문제에서 commands에 있는 i, j, k 를 뽑아낼 때
  • 첫번째 방법
for command in commands:
    i, j, k = command

i == command[0], j == command[1], k == command[2] 이렇게 값이 들어간다.

  • 두번째 방법 - 더 간결한 방법!
for i,j,k in commands:

💡 코드 좀 더 간단하게 작성하기

  • 풀이과정 2번, 3번, 4번을 한 줄의 코드로 작성할 수 있다!
  • 줄이기 전!
# 2. 배열 array의 i번째부터 j번째까지 잘라서 새로운 배열을 만든다.
new_arr = array[i:j]
# 3. 2번에서 만든 새로운 배열을 정렬한다.
new_arr.sort()
        
 # 4. 새로운 배열의 k번째 수를 정답 리스트에 넣는다.
answer.append(new_arr[k])
  • 줄인 후
answer.append(list(sorted(array[i:j]))[k])

새로운 변수에 할당을 해줄 필요도 없고 코드도 더 깔끔해진다~!

좋은 웹페이지 즐겨찾기