→ Problems

[Algorithm] 프로그래머스 - 요격 시스템 (Swift)

Swift librarian 2024. 3. 20. 00:04

문제 소개

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

간단하게 문제를 소개하면[[4,5],[4,8],[10,14],[11,13],[5,12],[3,7],[1,4]] 라는 입력값이 나온다면 이 입력값을 모두 포함하는 최소의 실수가 몇개인지 출력하는 문제이다. 아래에서는 3이라는 출력값이 나온다.

출처: 프로그래머스

 

문제 풀이

아주 간단하게 접근을 했다. 우선 이런 문제들은 하나를 기준으로 정렬해주는 것이 핵심 포인트 인듯 싶다. 그 후 미사일 문제라 aim 이라는 변수를 두었고, 이 aim이라는 구간에 target이 포함된다면 상관 없고, 만약 target의 범위가 좁다면 aim의 범위도 같이 줄어들게 된다. 만약 aim을 벗어난다면 새로운 aim과 함께 정답에 1을 추가하도록 했다.

func solution(_ targets:[[Int]]) -> Int {
    let targets = targets.sorted(by: { $0[0] < $1[0] })
    var answer = 1
    
    var aim = targets[0]
        
    for target in targets {
        if aim[1] > target[1] {
            aim[1] = target[1]
        } else if aim[1] <= target[0] {
            answer += 1
            aim = target
        }
    }
    return answer
}