쥐수의 공부노트

백준 1920번 수 찾기 본문

바킹독 알고리즘/이분 탐색

백준 1920번 수 찾기

쥐수 2023. 8. 11. 16:21
728x90

정답 :

let n = Int(readLine()!)!
let array = readLine()!.split(separator: " ").map{Int($0)!}.sorted()

let m = Int(readLine()!)!
let array2 = readLine()!.split(separator: " ").map{Int($0)!}

func binary(tar : Int) -> Int {
    var st = 0
    var ed = n-1
    
    while(st <= ed) {
        var mid = (st+ed)/2
        if array[mid] < tar {
            st = mid + 1
        }
        else if array[mid] > tar {
            ed = mid - 1
        }
        else {
            return 1
        }
    }
    return 0
}

for i in 0..<m{
    var check = binary(tar: array2[i])
    print(check)
}

비교할 array는 sorted를 통해 정렬을 하고, st와 ed를 통해 tar의 숫자와 정렬된 array와 비교하여 st와 ed의 위치를 변경하면 된다!

728x90

'바킹독 알고리즘 > 이분 탐색' 카테고리의 다른 글

백준 1654번 랜선 자르기  (0) 2023.08.16