BOJ 2352 반도체 설계
꼬이지 않는다라는 말이 이해가 가지 않았는데, 연결 선이 서로 겹쳐지지 않는다는 말임결국은 증가하는 부분수열 처럼 되는 문제임.
샘플 코드
let _ = Int(readLine()!)!
let input = readLine()!.split(separator: " ").map { Int($0)! }
var list = [input[0]]
input.forEach { element in
if element == list.last { }
else if element > list.last! {
list.append(element)
} else { // 이 경우에는 list순회
let position = lowerBound(arr: list, n: list.count, key: element)
list[position] = element
}
// print(list)
}
print(list.count)
func lowerBound(arr: [Int], n: Int, key: Int) -> Int {
var start: Int = 0
var end: Int = n
var mid: Int = n
while end - start > 0 {
mid = (start + end) / 2
if arr[mid] < key {
start = mid + 1
} else {
end = mid
}
}
return end
}
'알고리즘 문제 풀이' 카테고리의 다른 글
| BOJ 1197 최소 스패닝 트리 (0) | 2022.05.16 |
|---|---|
| [Swift] BOJ 2143 두 배열의 합 (0) | 2022.05.13 |
| [Swift] BOJ 2805 나무 자르기 (0) | 2022.05.12 |
| [Swift] BOJ 1920 수 찾기 (0) | 2022.05.12 |
| [Swift] BOJ 7453 합이 0인 네 정수 (0) | 2022.05.12 |