[BOJ] 백준 1940 주몽 풀이 (swift)

서정원·2024년 10월 3일
0

Algorithm

목록 보기
2/5
post-custom-banner

주몽

풀이 (투포인터)

3번째 입력한 값을 입력받을 때 오름차순으로 받고, inputArr[left] 와 inputArr[right]의 합이 M과 동일하면 count 를 증가시키면서 left += 1, right -= 1 을 해주고 아래의 if 문은 실행하지 않습니다.
만약 leftIndex + rightIndex < M 보다 작다면 left += 1, 그게 아닌 경우는 right -=1 을 해주면서 값을 찾으면 됩니다.

let N = Int(readLine()!)!
let M = Int(readLine()!)!
let inputArr = readLine()!.split(separator: " ").map { Int($0)! }.sorted()

var left = 0
var right = inputArr.count - 1          //배열의 마지막 값은 index - 1
var count = 0

while left < right {
    if inputArr[left] + inputArr[right] == M {
        count += 1
        left += 1
        right -= 1
        
        continue
    }
    
    if inputArr[left] + inputArr[right] < M {
        left += 1
    } else { right -= 1 }
}

print(count)

후기

투 포인터를 처음 공부하실 때 풀기 좋은 문제인 것 같습니다.

읽어주셔서 감사합니다! 오타 및 잘못된 내용은 언제든 댓글 달아주시면 최대한 빠르게 수정하겠습니다!

profile
열정 열정 열정
post-custom-banner

0개의 댓글