PYTHON

[python/프로그래머스 LV1] K번째수

jy9892 2025. 2. 5. 18:01
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42748

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

주어진 리스트 array에서 특정 구간을 자르고 → 정렬하고 → k번째 값을 찾는 문제입니다.

  1. 배열에서 i번째부터 j번째까지 자르기
  2. 정렬하기
  3. k번째 값 찾기

예를 들어, array = [1, 5, 2, 6, 3, 7, 4]이고 commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]라면:
첫 번째 명령어 [2, 5, 3]을 처리하는 과정을 보면,

  1. array의 2번째부터 5번째까지 가져오면 [5, 2, 6, 3]
  2. 이를 정렬하면 [2, 3, 5, 6]
  3. 여기서 3번째 값은 5

이런 방식으로 각 commands를 처리한 결과를 리스트로 반환하는 문제입니다.

 

def solution(array, commands):
    answer = []
    
    for command in commands:
        i, j, k = command
        sliced_array = sorted(array[i-1:j])  # 리스트 자르고 정렬
        answer.append(sliced_array[k-1])  # k번째 값 추가
    
    return answer

 

📌 코드해석

def solution(array, commands):
   answer = []
       for command in commands:
        i, j, k = command

 

1. solution 함수는 두 개의 인자를 받습니다: array(숫자리스트), commands(여러개의 i,j,k를 담는 리스트)

- commands의 각 원소는 [i, j, k] 형태이며, 슬라이싱 범위(i~j)와 k번째 값을 의미합니다.

 

2. 최종 결과를 저장할 빈 리스트 answer를 생성합니다.

 

3. commands 리스트를 하나씩 순회하며 [i, j, k]를 가져옵니다.

- command는 [i, j, k] 형태의 리스트이며, 이를 변수 i, j, k에 할당합니다.

 

1회차: i=2, j=5, k=3  (command = [2, 5, 3])
2회차: i=4, j=4, k=1  (command = [4, 4, 1])
3회차: i=1, j=7, k=3  (command = [1, 7, 3])

 

sliced = sorted(array[i-1:j])
answer.append(sliced[k-1])
return answer

 

4. array[i-1:j] : 리스트 슬라이싱을 사용하여 i번째부터 j번째까지의 요소를 추출합니다.

- Python의 인덱스는 0부터 시작하므로, i-1을 사용합니다.

 

5. sorted(...) : 슬라이싱한 리스트를 정렬합니다.

- 예제에서 [5, 2, 6, 3] → [2, 3, 5, 6]

 

6. 정렬된 리스트에서 k번째 값을 찾고, 이 값을 answer 리스트에 추가합니다.

 

7. 모든 commands를 처리한 후 최종 결과 answer를 반환합니다.

 

📌 코드 요약

✔ commands 리스트를 하나씩 반복하며 [i, j, k] 값을 가져옴
✔ array에서 i~j 범위를 슬라이싱
✔ 정렬 후 k번째 값을 answer 리스트에 추가
✔ answer를 반환

 

📌 사용된 주요 함수

 

✅ 리스트 슬라이싱 (array[i-1:j])

  • 리스트의 일부를 가져올 때 사용됩니다.
  • i번째 ~ j번째를 가져오려면 Python은 0부터 시작하는 인덱스 시스템이므로, i-1을 사용해야 합니다.
arr = [10, 20, 30, 40, 50]
print(arr[1:4])  # [20, 30, 40]  (index 1 ~ 3까지 포함)

 

✅ sorted() 함수

  • 리스트를 정렬할 때 사용됩니다.
  • 새로운 정렬된 리스트를 반환하며, 원본 리스트는 변경되지 않습니다.
arr = [3, 1, 4, 1, 5]
sorted_arr = sorted(arr)  # [1, 1, 3, 4, 5]

 

✅ list.append(value)

  • 리스트에 새로운 값을 추가할 때 사용됩니다.
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)  # [1, 2, 3, 4]

 

✅ 리스트 인덱싱 (list[index])

  • 리스트의 특정 위치 값을 가져오는 방법입니다.
  • Python의 인덱스는 0부터 시작하므로 k번째 요소는 k-1 인덱스로 접근합니다.
arr = [10, 20, 30, 40, 50]
print(arr[2])  # 3번째 요소 (30)

 

 

반응형

'PYTHON' 카테고리의 다른 글

[python/프로그래머스 LV1] 과일 장수  (0) 2025.02.24