문제 소개
간단하게 문제를 소개하면[[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
}
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 27277번 장기자랑 (Swift) (0) | 2024.03.22 |
---|---|
[Algorithm] 배낭 문제 Knapsack Problem (Swift) (0) | 2024.03.20 |
[Algorithm] 프로그래머스 - 합승 택시 요금 (Swift) (0) | 2024.03.20 |
[Algorithm] 프로그래머스 - 길 찾기 게임 (Swift) (0) | 2024.03.19 |
[Algorithm] 백준 - 1654번 랜선 자르기 (Swift) (0) | 2024.03.19 |