[코딩테스트] - ⚔ Sort 마스터 배지훈
2025. 9. 21. 20:41ㆍ알고리즘
난이도
실버 4
유형
Binary Search
소요시간
1시간 이상...
회고
처음에 기본 구현 method로 풀었다가 시간초과가 떠서 사용할 수 있는 알고리즘 찾아보았다. 주어진 수의 범위가 10의 5승 등으로 커서 Binary Search 적용하여 풀었다.
Binary Search 적용 중 중복 value를 고려하지 않아서, 가장 빠른 index가 아닌 값을 return하여 오답 발생하였다.
처음 시도
func binarySearch(arr: [Int], target: Int) -> Int {
var left = 0
var right = arr.count - 1
var result = -1
while left <= right {
let mid = (left + right) / 2
if arr[mid] == target {
return mid // 💥 가장 빠른 index가 아닌 index return
} else if arr[mid] > target {
right = mid - 1
} else {
left = mid + 1
}
}
return result
}
}
최종 코드
func sortMaster() {
let line = readLine()!.split(separator: " ").compactMap { Int(String($0)) }
let (n, m) = (line[0], line[1])
var A = Array(repeating: 0, count: n)
(0..<n).forEach { i in
let v = Int(readLine()!)!
A[i] = v
}
let B = A.sorted()
var D = Array(repeating: 0, count: m)
(0..<m).forEach { i in
let v = Int(readLine()!)!
D[i] = v
}
(0..<D.count).forEach { i in
print(binarySearch(arr: B, target: D[i]))
}
func binarySearch(arr: [Int], target: Int) -> Int {
var left = 0
var right = arr.count - 1
var result = -1
while left <= right {
let mid = (left + right) / 2
if arr[mid] >= target {
if arr[mid] == target {
result = mid
}
right = mid - 1
} else {
left = mid + 1
}
}
return result
}
}'알고리즘' 카테고리의 다른 글
| [코딩테스트] 🗺️ 보물섬 - 백준 2589 (0) | 2025.09.23 |
|---|---|
| [코딩테스트] 🦠 연구소3 - 백준 17142 | 삼성 SW 역량 (1) | 2025.09.22 |
| [코딩테스트] ⚙️ 톱니바퀴 돌리기 - 구현문제 삼성 SW 역량 (0) | 2025.09.20 |
| [코딩 테스트] 🚚 택배 배달과 수거하기 - 2023 KAKAO BLIND (0) | 2025.09.19 |
| 백준 1629 문제 시간초 1등 기념 포스팅 (5) | 2024.08.31 |