🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42748
📰 문제 요약
문제 설명, 입력, 출력, 조건 등 간략하게 정리
문제 설명
배열의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수 구하기
입력
- 1≤ 배열 array ≤ 100 (각 원소는 1 ~ 100)
- i, j, k를 원소로 가진 2차원 배열 commands (길이는 3)
출력
commands의 모든 원소에 대한 결과를 return
🔓 문제 접근 방식
기본 아이디어
- 정렬을 사용하면 되지만, 효율적인 정렬이어야 한다!
사용 알고리즘
- 정렬 알고리즘
💻 구현 방법
- 각 회차의 command에서 i, j, k 요소 추출 (복잡함을 덜기 위해 따로 변수 할당)
- sorted 함수를 활용하여, 원하는 범위만큼 정렬된 리스트 생성
- 해당 범위의 K번째 수를 answer에 추가
👍🏻 최종 제출 코드
def solution(array, commands):
answer = []
for a in range(len(commands)):
i = commands[a][0] - 1 # i번째 숫자
j = commands[a][1] # j번째 숫자 (슬라이싱 고려해서 -1 안함)
k = commands[a][2] - 1 # 배열은 0부터 시작하므로 1 빼기
sorted_array = sorted(array[i:j]) # 정렬된 리스트 생성
answer.append(sorted_array[k]) # k번째 요소 추가
return answer
📝 새로 학습한 내용
리스트 슬라이싱을 할 때, array[i : j] 라고 쓸 경우, i번째부터 j-1번째 요소까지 슬라이싱되기 때문에 주의해야한다.
📚 참고 자료
'Problem Solving > 프로그래머스 (Programmers)' 카테고리의 다른 글
| [프로그래머스] 가장 큰 수 (0) | 2025.02.02 |
|---|---|
| [프로그래머스] 더 맵게 (0) | 2025.02.02 |
| [프로그래머스] 기능개발 (0) | 2025.01.19 |
| [프로그래머스] 같은 숫자는 싫어 (0) | 2025.01.18 |
| [프로그래머스] 완주하지 못한 선수 (0) | 2025.01.11 |
