내 풀이
import Foundation
func solution(_ number:[Int]) -> Int {
var answer = 0
for i in 0..<number.count {
for j in i+1..<number.count {
for k in j+1..<number.count {
if number[i] + number[j] + number[k] == 0 { answer += 1 }
}
}
}
return answer
}
- 입력된 배열을 오름차순으로 정렬
- 정렬된 배열을 사용하여 투 포인터 알고리즘을 적용
- 왼쪽과 오른쪽 끝에서부터 포인터를 이동하면서 합이 0이 되는 경우의 수 찾기
- 왼쪽 포인터를 한 칸씩 오른쪽으로, 오른쪽 포인터를 한 칸씩 왼쪽으로 이동하면서 합을 계산
- 합이 0이 되는 경우를 찾으면 삼총사의 수 증가
- 이렇게 해서 찾은 삼총사의 수 반환
투 포인터 알고리즘이란?
투 포인터 알고리즘은 배열이나 리스트에서 두 개의 포인터를 사용하여 원하는 결과를 찾는 알고리즘 기법
주로 정렬된 배열에서 특정 합을 만족하는 요소들을 찾거나, 특정 범위의 요소들을 처리하는 데 사용
투 포인터 알고리즘의 종류
- 고정 포인터를 기준으로 이동하는 방식: 고정된 포인터(예: 배열의 시작 또는 끝)와 이동하는 포인터(예: 배열의 끝 또는 시작)을 사용하여 배열을 순회하면서 원하는 조건을 만족하는 요소를 찾는다. 보통 배열이 정렬되어 있을 때 사용됨.
- 두 포인터가 서로 다른 방향으로 이동하는 방식: 두 개의 포인터가 서로 다른 방향으로 이동하면서 배열을 순회하면서 특정 조건을 만족하는 요소를 찾는다. 주로 배열이 정렬되어 있지 않을 때 사용됨.
두 포인터는 보통 배열의 시작과 끝을 가리키며, 이 알고리즘은 한 번의 순회로 원하는 결과를 얻을 수 있어 효율적이다.
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 최소 직사각형 (2) | 2024.03.05 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 크기가 작은 부분 (0) | 2024.03.04 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 3진법 뒤집기 (0) | 2024.02.28 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 이상한 문자 만들기 (0) | 2024.02.28 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 최대공약수와 최소공배수 (1) | 2024.02.27 |