[알고리즘] Swift -프로그래머스 연습문제 #181893(배열 조각하기)

2023. 6. 7. 02:33ALGORITHM/Swift

728x90
반응형

 

문제링크

 

 

 

 

분석

정수배열 arr 와 query 가 주어진다.

query 를 순회하면서 다음 작업을 반복한다.

짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버린다.

홀수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버린다.

위 작업을 마친 arr의 부분 배열을 리턴하는 문제이다.

 

풀이 과정

arr = [0,1,2,3,4,5] / query = [4,1,2]

i=0, 짝수 인덱스이므로 4번인덱스 뒷부분을 잘라서 버린다. arr = [0,1,2,3,4]

i=1, 홀수 인덱스이므로 1번인덱스 앞부분을 잘라서 버린다. arr = [1,2,3,4]

i=2, 짝수 인덱스이므로 2번인덱스 뒷부분을 잘라서 버린다. arr= [1,2,3]

 

 

풀이

import Foundation

func solution(_ arr: [Int], _ query: [Int]) -> [Int] {
    var result: [Int] = arr
    
    for i in 0..<query.count {
        if i % 2 == 0 {
            result = Array(result.prefix(through: query[i]))
            
        } else {
            result.removeFirst(query[i])
        }
    }
    
    return result
}

 

결과

print(solution( [0, 1, 2, 3, 4, 5]    , [4, 1, 2]               ))

 

 


📂  정리

query의 값이 짝수일때와 홀수일때가 아닌 인덱스의 값이 짝수일때와 홀수일때로 나누는 것이다.

문제가 헷갈려서 query의 값으로 설정했더니 에러가 나왔다.

for i in query {
    if i % 2 == 0 {
		...
    }
}
테스트 1 〉	실패 (signal: illegal instruction (core dumped))

 

 

 

728x90
반응형