Test/python
배열 조각하기
soo15
2023. 5. 7. 22:00
[문제 설명]
정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고
배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고
배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
[제한사항]
5 ≤ arr의 길이 ≤ 100,000
0 ≤ arr의 원소 ≤ 100
1 ≤ query의 길이 < min(50, arr의 길이 / 2)
query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.
[입출력 예]
arr | query | result |
[0, 1, 2, 3, 4, 5] | [4, 1, 2] | [1, 2, 3] |
[입출력 예 설명]
입출력 예 #1)
이번에 매번 처리할 query의 값과 처리 전후의 arr의 상태를 표로 나타내면 다음과 같습니다.
query의 값 | query 처리 전 | query 처리 후 | 비고 |
4 | [0, 1, 2, 3, 4, 5] | [0, 1, 2, 3, 4] | 0번 인덱스의 쿼리이므로 뒷부분을 자른다. |
1 | [0, 1, 2, 3, 4] | [1, 2, 3, 4] | 1번 인덱스의 쿼리이므로 앞부분을 자른다. |
2 | [1, 2, 3, 4] | [1, 2, 3] | 2번 인덱스의 쿼리이므로 뒷부분을 자른다. |
따라서 [1, 2, 3]을 return 합니다.
[나의 풀이]
def solution(arr, query):
for i in range(len(query)):
if i % 2 == 0:
del arr[query[i]+1:]
else :
del arr[:query[i]]
return arr
[설명]
1. query의 index가 짝수 or 홀수일 때 나눠서 del하기
arr = [0, 1, 2, 3, 4, 5]
query = [4, 1, 2]
for i in range(0,len(query)):
if i % 2 == 0:
print( '짝수일 때 삭제되는 list : ', arr[query[i]+1:])
else:
print('홀수일 때 삭제되는 list : ' ,arr[:query[i]])
Out[1]:
짝수일 때 삭제되는 list : [5]
홀수일 때 삭제되는 list : [0]
짝수일 때 삭제되는 list : [3, 4, 5]
> 위의 출력으로 나온 값을 del하여 최종 답을 구한다.