BOJ 1920 수 찾기
✅ 이진탐색을 구현하는 문제이다.
아니 이진탐색 그 자체이다.
✅ 코드
자료구조와 함께 추가하였다. 이진 탐색 포스팅은 최대한 빨리 하도록하자
import Foundation
/// 오름차순으로 정렬 된 리스트에서 item의 index를 반환합니다. 없으면 -1
func binarySearchForAscending<T: Comparable>(array: [T], item: T) -> Int {
var low = 0
var high = array.count - 1
while low <= high {
let mid = (low + high) / 2
let guess = array[mid]
if guess == item {
return mid
} else if guess > item {
high = mid - 1
} else {
low = mid + 1
}
}
return -1
}
_ = Int(readLine()!)!
var searchList = [Int]()
var input = readLine()!.components(separatedBy: " ").map { Int($0)! }
input.forEach { searchList.append($0) }
_ = Int(readLine()!)!
var numberList = [Int]()
input = readLine()!.components(separatedBy: " ").map { Int($0)! }
input.forEach { numberList.append($0) }
searchList.sort(by: <)
// print(searchList) // 기준
// print(numberList) // 찾아야 하는 기준 숫자
var answer = [Int]()
numberList.forEach {
let a = binarySearchForAscending(array: searchList, item: $0)
if a == -1 {
answer.append(0)
} else {
answer.append(1)
}
}
answer.forEach {
print($0)
}
(참고)
https://babbab2.tistory.com/104
Swift) 탐색 :: 이진 탐색(Binary Search) 이해하기
안녕하세요 :) 소들입니다!!!!!!! 이번 포스팅은 탐색 알고리즘 중에서도, 이진 탐색 알고리즘에 대해 다뤄볼까 합니다!!! 👀 이전에 공부한 완전 탐색 알고리즘은, 최악의 경우 모든 배열을 순회
babbab2.tistory.com
[백준] 1920번 수 찾기[Swift]
문제 링크 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주
icksw.tistory.com
'알고리즘 문제 풀이' 카테고리의 다른 글
[Swift] BOJ 2352 반도체 설계 (0) | 2022.05.12 |
---|---|
[Swift] BOJ 2805 나무 자르기 (0) | 2022.05.12 |
[Swift] BOJ 7453 합이 0인 네 정수 (0) | 2022.05.12 |
[Swift] BOJ 12738 가장 긴 증가하는 부분 수열 3 (0) | 2022.05.12 |
[Swift] BOJ 1300 K번째 수 (0) | 2022.05.12 |