수열과 구간 쿼리 3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
이 문제는 배열이랑 쿼리가 주어지고, 각 쿼리에 대해 배열에서 두 원소를 교환해야 하는 문제야. 쉽게 말해서, 쿼리마다 교환해야 할 인덱스가 주어지면, 해당 인덱스들끼리 값을 바꿔주면 돼.
※ 쿼리(query)는 "뭔가를 요청하는 것"인데, 이 문제에서는 배열에서 두 인덱스를 교환하라는 요청이야. 인덱스(index)는 배열에서 각 원소의 위치를 말해. 배열의 첫 번째 원소는 인덱스 0번, 두 번째 원소는 인덱스 1번 이런 식으로 번호가 매겨져 있어. 예를 들어, 배열 [10, 20, 30]에서 10은 0번, 20은 1번, 30은 2번 인덱스를 가지지.
나의 풀이 :
func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
var swapTemp: Int = 0
var array = arr
queries.forEach {
swapTemp = array[$0[0]] // 첫 번째 인덱스 값을 swapTemp에 저장
array[$0[0]] = array[$0[1]] // 첫 번째 인덱스에 두 번째 인덱스 값 대입
array[$0[1]] = swapTemp // 두 번째 인덱스에 swapTemp 값 대입
}
return array
}
풀이 과정:
- 배열 복사: 주어진 arr 배열을 그대로 수정하지 않으려면, 먼저 arr 배열을 array라는 새로운 배열로 복사해. 그렇게 하면 원본 배열은 변하지 않고, 새로운 배열에서 값을 바꾸는 거야.
- 쿼리 처리: queries 배열에 있는 각 쿼리를 하나씩 처리해. 각 쿼리는 [인덱스1, 인덱스2] 형태로 두 개의 인덱스를 주는데, 이 두 인덱스에 해당하는 값을 서로 교환해주면 돼. 예를 들어 [0, 2]라면, arr[0]과 arr[2]의 값을 바꾸는 거야.
- 값 교환 방법: 값을 교환할 때는 swapTemp라는 임시 변수에 값을 저장해서 처리해.
- 먼저 swapTemp = array[$0[0]]로 첫 번째 인덱스의 값을 임시 변수에 저장하고,
- 그 다음 array[$0[0]] = array[$0[1]]로 첫 번째 인덱스에 두 번째 인덱스의 값을 넣고,
- 마지막으로 array[$0[1]] = swapTemp로 두 번째 인덱스에 첫 번째 인덱스의 값을 넣어주면 끝!
- 결과 반환: 쿼리를 다 처리한 후, 변경된 배열을 return.
예시:
arr = [10, 20, 30, 40]이고 queries = [[0, 2], [1, 3]]일 때:
- 첫 번째 쿼리 [0, 2]를 처리하면 배열은 [30, 20, 10, 40]
- 두 번째 쿼리 [1, 3]을 처리하면 배열은 [30, 40, 10, 20]
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 수열과 구간 쿼리 2 (w/ Swift) (0) | 2025.01.13 |
---|---|
[Algorithm] 2024 회고 : 나의 잔디구장 (4) | 2024.12.22 |
[Algorithm] A 강조하기 (w/ Swift) (1) | 2024.12.19 |
[Algorithm] 홀짝 구분하기 (3) | 2024.12.04 |
[Algorithm] 문자열 붙여서 출력하기 (w/ Swift) (0) | 2024.12.03 |