본문 바로가기

전체 글266

[Swift][우선순위 큐] 백준 1927, 11279 (최소힙, 최대힙) 요구능력 우선순위 큐 (힙) 문제풀이 힙과 우선순위 큐의 이론을 알고 생각하면서 따라쳐보시면 이해하기 쉽습니다. 저도 그렇게 익혔습니다. sortFunction을 로 할경우 최대힙이됩니다. 후기 우선순위큐, 힙에대해 알고있으면 풀리는 간단한문제 코드 import Foundation struct Heap { private var elements: [T] = [] private let sortFunction: (T, T) -> Bool init (sortFunction: @escaping (T, T) -> Bool){ self.sortFunction = sortFunction } var isEmpty: Bool { return self.elements.count == 1 } func leftChild(of .. 2022. 5. 27.
[Swift][이분탐색] 백준 1300번 (K번째 수) 요구능력 이분탐색(lowerBound), 수학(곱하기성질) 문제풀이 정성들여서 정리해주신분의 글을 참고하였습니다. 위 분의 글로 이해하고 swift로 푸시는 분들은 제 코드를 보셔도 괜찮을 것 같습니다. 후기 어렵다 코드 let n = Int(String(readLine()!))! let k = Int(String(readLine()!))! var start = 1 var end = n * n while start = k{//lowerBound를 해줘야 정확히 해당인덱스에 관한 수를 가져옴. mid가 다른데, count가 같은게 여러개가 있을 수도있음. //예를 들어서, mid = 4일때 count가 5이고 mid가 5일때도 count가 5이면 upperBound를 써버리면 6을 출력함. end = mi.. 2022. 5. 24.
[Swift][이분 탐색] 백준 2110번 (공유기 설치) 요구능력 이분탐색(upperBound) 문제풀이 mid의 경우 공유기가 들어갈 수 있는 집사이의 간격으로 기준을 잡았다. 집들의 거리가 저장된 배열을 가지고 집들끼리의 거리를 비교해서 인접한집끼리 거리가 mid보다 크거나 같을경우 공유기 설치가 가능하다. 후기 이분탐색은 기준을 잘 세우자.. 코드 import Foundation let nc = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nc[0] let c = nc[1] var arr = [Int]() for _ in 0.. 2022. 5. 24.
[Swift][이분탐색] 백준 2805번 (나무 자르기) 요구능력 이분탐색(upperBound) 문제풀이 이전에 풀었던 랜선자르기와 문제유형이 완전 동일하다. 가져갈 수 있는 나무의 크기를 구하기위해 sum으로 관리해줬다. 자를 수 없는 나무의 경우 mid(톱의 높이)보다 낮은 나무들이기 때문에 i - mid < 0일 경우 continue로 건너뛰었다. 후기 카테고리를 모르고있으면 이문제가 이분탐색인지 어떻게알지😂 코드 import Foundation let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] let arr = readLine()!.split(separator: " ").map{Int(String($0))!} let maxArr = arr.. 2022. 5. 24.