본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 삼총사

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

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이 되는 경우를 찾으면 삼총사의 수 증가

- 이렇게 해서 찾은 삼총사의 수 반환

 

 

 

투 포인터 알고리즘이란?

    투 포인터 알고리즘은 배열이나 리스트에서 두 개의 포인터를 사용하여 원하는 결과를 찾는 알고리즘 기법

    주로 정렬된 배열에서 특정 합을 만족하는 요소들을 찾거나, 특정 범위의 요소들을 처리하는 데 사용

 

투 포인터 알고리즘의 종류

  • 고정 포인터를 기준으로 이동하는 방식: 고정된 포인터(예: 배열의 시작 또는 끝)와 이동하는 포인터(예: 배열의 끝 또는 시작)을 사용하여 배열을 순회하면서 원하는 조건을 만족하는 요소를 찾는다. 보통 배열이 정렬되어 있을 때 사용됨.
  • 두 포인터가 서로 다른 방향으로 이동하는 방식: 두 개의 포인터가 서로 다른 방향으로 이동하면서 배열을 순회하면서 특정 조건을 만족하는 요소를 찾는다. 주로 배열이 정렬되어 있지 않을 때 사용됨.

두 포인터는 보통 배열의 시작과 끝을 가리키며, 이 알고리즘은 한 번의 순회로 원하는 결과를 얻을 수 있어 효율적이다.

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31