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