level1_K번째수
2024. 7. 1. 21:35ㆍ파이썬_알고리즘(코딩테스트)/level1

내가 제출한 코드
def solution(array, commands):
answer = []
for i in range(len(commands)):
arr = array[commands[i][0]-1:commands[i][1]]
arr.sort()
answer.append(arr[commands[i][2]-1])
return answer
- commands 리스트의 길이만큼 반복문을 수행한다.
- 각 반복마다 commands[i]는 세 개의 요소를 가진 리스트로 [start, end, k] 형태이다.
- array를 start-1부터 end까지 슬라이싱하여 새로운 배열 arr을 만든다.
- arr을 오름차순으로 정렬한다.
- 정렬된 arr에서 k-1번째 요소를 answer 리스트에 추가한다.
- 최종적으로 answer 리스트를 반환한다.
다른 사람이 제출한 코드1
def solution(array, commands):
return list(map(lambda x : sorted(array[x[0]-1:x[1]])(x[2]-1], commands))
- lambda x : x는 commands의 각 요소를 의미한다. commands의 각 요소는 [start, end, k] 형태이다.
- array[x[0] - 1 : x[1]]: array에서 start부터 end까지 자른다. 여기서 -1을 해주는 이유는 인덱스가 0부터 시작하기 때문이다. 예를 들어, start가 2이면, 실제로는 array의 1번 인덱스부터 시작해야 한다.
- sorted(array[x[0] - 1 : x[1]]): 자른 배열을 정렬한다.
- sorted(array[x[0] - 1 : x[1]])[x[2] - 1]: 정렬된 배열에서 k-1번째 값을 가져온다. -1을 해주는 이유는 역시 인덱스가 0부터 시작하기 때문이다. 예를 들어, k가 3이면 실제로는 정렬된 배열의 2번 인덱스를 가져와야 한다.
lambda 매개변수 : 표현식
map(함수, 리스트)
- 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아준다.

나와 같은 맘....

다른 사람이 제출한 코드2
def solution(array, commands):
answer = []
for command in commands:
i,j,k = commands
answer.append(list(sorted(array[i-1:j]))[k-1])
return answer
- commands 리스트의 각 명령을 command로 반복한다.
- 각 command는 [start, end, k] 형태의 리스트이다.
- i,j,k로 각각 start,end,k 값을 할당한다.
- array[i-1:j]: array의 i-1부터 j까지의 부분 배열을 자른다.
- sorted(array[i-1:j]): 자른 배열을 오름차순으로 정렬한다.
- list(sorted(array[i-1:j]))[k-1]: 정렬된 배열에서 k-1번째 요소를 가져온다.
- 최종적으로 answer 리스트를 반환한다.

세상에 똑똑이들이 많은거 같다... ㅠㅠㅠ
'파이썬_알고리즘(코딩테스트) > level1' 카테고리의 다른 글
| level1_문자열 내 마음대로 정렬하기 (0) | 2024.08.11 |
|---|---|
| level1_푸드 파이트 대회 (1) | 2024.08.11 |
| level1_두 개 뽑아서 더하기 (0) | 2024.06.26 |
| level1_원소들의 곱과 합 (0) | 2024.06.24 |
| level1_홀짝에 따라 다른 값 반환하기 (0) | 2024.06.24 |