배열 조각하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정수 배열 arr와 정수 배열 query가 주어졌고, query 배열을 순회하면서 다음과 같은 작업을 반복하는거야. 𓃟𓃟𓃟
- query의 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 포함한 뒷부분을 자르고 남기기.
- query의 홀수 인덱스에서는 arr에서 query[i]번 인덱스를 제외한 앞부분을 자르고 남기기.
즉, query 배열의 각 인덱스에서 짝수일 때는 배열의 앞부분을 남기고, 홀수일 때는 배열의 뒷부분을 남긴다고 생각하면 돼.
그럼 이제 Swift와 Python으로 각각 어떻게 풀 수 있는지 설명해볼게. (̂•͈Ꙫ•͈⑅)̂ ୭
1. w/ Swift
- 먼저, arr를 result에 복사해. 이 배열은 우리가 수정해 나갈 배열이야.
- query 배열을 순회하면서 index와 value를 얻어오고,
- index가 짝수일 때는, value번 인덱스까지의 요소를 남겨야 해. Swift의 prefix 메서드를 사용해서 result 배열의 앞부분만 남기면 돼. 예를 들어 value가 4라면, 0부터 4까지의 요소만 남겨.
- index가 홀수일 때는, value번 인덱스부터 끝까지의 요소를 남겨야 해. Swift의 suffix 메서드를 사용해서 value번 인덱스 이후의 요소들을 남기면 돼.
- 이 과정을 모두 반복하고 나면 result가 최종 결과가 되는거지!
func solution(_ arr: [Int], _ query: [Int]) -> [Int] {
var result = arr
for (index, value) in query.enumerated() {
if index % 2 == 0 {
// 짝수 인덱스에서는 query[i]번 인덱스를 포함한 앞부분만 남기기
result = Array(result.prefix(value + 1))
} else {
// 홀수 인덱스에서는 query[i]번 인덱스를 제외한 뒷부분만 남기기
result = Array(result.suffix(result.count - value))
}
}
return result
}
// 예제
let arr = [0, 1, 2, 3, 4, 5, 6, 7]
let query = [4, 2, 6, 1]
print(solution(arr, query)) // 결과: [2, 3, 4]
2. w/ Python
- arr를 result라는 이름의 변수에 복사해. 여기도 마찬가지로 이 배열을 계속 수정해 나가는 거야.
- query를 순회하면서 i와 q를 얻어와. i는 query의 인덱스, q는 현재 값이야.
- i가 짝수일 때는, result의 앞부분을 남겨야 해. 슬라이싱을 이용해서 result[:q + 1]을 남기면 돼. 이렇게 하면 q번 인덱스까지의 요소를 남겨.
- i가 홀수일 때는, result의 뒷부분을 남겨야 해. 슬라이싱을 이용해서 result[q:]로 하면 q번 인덱스부터 끝까지 남겨.
- 이렇게 모든 query 요소를 처리하고 나면 최종 결과가 result에 남는거야. 𓃟𓃟
def solution(arr, query):
result = arr
for i, q in enumerate(query):
if i % 2 == 0:
# 짝수 인덱스에서는 query[i]번 인덱스를 포함한 앞부분만 남기기
result = result[:q + 1]
else:
# 홀수 인덱스에서는 query[i]번 인덱스를 제외한 뒷부분만 남기기
result = result[q:]
return result
# 예제
arr = [0, 1, 2, 3, 4, 5, 6, 7]
query = [4, 2, 6, 1]
print(solution(arr, query)) # 결과: [2, 3, 4]
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 대소문자 바꿔서 출력하기 (w/ Swift) (0) | 2024.12.02 |
---|---|
[Algorithm] 가장 많이 받은 선물 (w/ Swift) (2) | 2024.11.29 |
[Algorithm] 마지막 두 원소 (w/ Swift) (8) | 2024.10.09 |
[Algorithm] 문자열 다루기 (w/ Swift) (2) | 2024.10.07 |
[Algorithm] 길이에 따른 연산 (w/ Swift) (5) | 2024.09.15 |