이건 어떤 풀이도 참고하지 않고 내가 풀이해봤다.
그래서 비효율적일 수도 있다.
그냥 이렇게 이렇게 하면 돌아가겠지 하는 생각으로 짠 것이기 때문에
def solution(array, commands):
cutArray = []
result = []
for part2 in commands:
i = part2[0]
j = part2[1]
k = part2[2]
for part in range(i-1, j):
cutArray.append(array[part])
cutArray.sort()
result.append(cutArray[k-1])
cutArray.clear()
return result
print(solution([1, 5, 2, 6, 3, 7, 4], [[2, 5, 3], [4, 4, 1], [1, 7, 3]]))
읽을 사람만 읽어 볼 설명 🐿️
우선 풀이하는 데에 급급하여 변수명을 제대로 설정하지 않아 뒤죽박죽이다.
문제를 살펴보도록 하자
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어진다고 하였다.
그러면 commands 내의 값에 따라 i, j, k가 변하므로
여기에 for 문을 걸어줘야겠다고 생각했다.
for part2 in commands:
i = part2[0]
j = part2[1]
k = part2[2]
그게 이 부분이다.
commands 배열에 있는 값들을 part2에 담고
commands는 2차원 배열 이니까 part2에는 1차원 배열이 담겨 있다.
그 1차원 배열들의 index 값 위치에 있는 수들을 각각 i, j, k에 담아주었다.
for part2 in commands:
i = part2[0]
j = part2[1]
k = part2[2]
for part in range(i-1, j):
cutArray.append(array[part])
cutArray.sort()
result.append(cutArray[k-1])
cutArray.clear()
그 다음 for 문이다. 나는 이중 for문으로 해당 문제를 풀이하였다.
문제에서 array의 i번째부터 j번째까지 자른다고 하였으니,
for문이 출력 할 range를 i-1에서 j까지로 설정해 주었다.
미리 비워놓은 cutArray에 array의 [part] 인덱스 위치에 있는 값들을
append 즉, 삽입해 주었다. 그리고 sort모듈로 정렬을 하고,
최종적인 결과 값을 저장할 result 배열에
cutArray에 있는 k-1 인덱스 위치에 있는 값을 삽입해 주었다.
(문제에서 일반적인 인덱스 시작 위치인 0,1,2..가 아닌 1부터 시작해서
다 1씩 빼준 값으로 코드를 짰다.)
새로운 commads 배열 값이 돌 때마다 cutArray는 비워져 있어야 함으로
나는 이것도 clear모듈 사용해서 비워주었다.
그리고 result배열 내에 있는 값들 출력해주고 마무리 했다.
여기까지 입니다. 감사합니다.🐇