일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SWIFT
- BFS
- tusit font 추가 방법
- swift navigationcontroller
- 타임라인 포맷팅
- swift bottomsheet
- custom ui
- reactorkit
- swift 백준
- custombottomsheet
- claen architecture
- coordinator
- DP
- identifiable
- swift dashed line
- RxSwift
- swift concurrency
- Tuist
- UIKit
- task cancellation
- swift 점선
- swift custom ui
- task cancel
- traits
- rxdatasources
- custom navigation bar
- paragraph style
- button configuration
- domain data
- uikit toast
- Today
- Total
목록swift 백준 (32)
김경록의 앱 개발 여정

https://www.acmicpc.net/problem/2212 풀이 아이디어위 예제 입력을 예시로 설명 1. 오름차순으로 정렬 ( 1 3 6 6 7 9 )2. 앞자리랑 차이나는 거리 계산(gaps) -> ( 2 3 0 1 2) 3. 거리 차이를 최소로 만들어야 하고, 우리는 그걸 k개의 집중국 수 (그룹) 만큼으로 나눌 수 있다.센서를 K개의 그룹으로 나누기 위해선센서 사이를 K - 1번 끊어야 함왜냐면,6개의 센서를 2그룹으로 나누려면 → 1번 끊어야 하고6개를 3그룹으로 나누려면 → 2번 끊어야 하니까. 4. 고로 내림차순으로 정렬된 거리 배열에서 k-1 만큼 뗴어내고 나머지를 합쳐주면 됨 풀이let n = Int(readLine()!)!let k = Int(readLine()!)!var i..

풀이 아이디어그리디 알고리즘 문제입니다.조건을 떠올리면 바로 풀 수 있는 문제인데30의 배수라는 조건을 떠올려보면,일단 끝이 무조건 0입니다.또 각 자릿수의 합이 무조건 3의 배수입니다. 이 조건을 따른 자세한 풀이는 아래와 같습니다. 풀이let n = readLine()!let arr = n.map { Int(String($0))! }// 0을 가지고있고, 배열 총합이 3의 배수인지 확인합니다.if arr.contains(0) && arr.reduce(0, +) % 3 == 0 { //숫자를 뺄수있는 문제가 아니므로 그냥 무조건 정답입니다. //다른 순서대로 섞어도 결국 각자리 합이 3의 배수가 안나오면 30의 배수가 될 수 없음 let result = arr.sorted(by: >).map ..

풀이두 집합 a,b 에서(a - b).count + (b-a).count 를 구하는 문제입니다.Swift에서 여집합을 구하는 함수는 'subtract()'와 'subtracting()' 입니다.둘의 차이점은 subtractsubtracting원본 변형새로운 집합 return이니 편의를 위해 'subtracting'을 사용해줍니다 let nm = readLine()!.split(separator: " ").map{Int($0)!}let a = Set(readLine()!.split(separator: " ").map{Int($0)!})let b = Set(readLine()!.split(separator: " ").map{Int($0)!})let aCount = a.subtracting(b).countle..

https://www.acmicpc.net/problem/11052 풀이 아이디어- 문제를 요약하면 결국 n개의 카드를 가장 비싸게 사는 법을 구하기- 즉, 카드 개수를 정확히 N개가 되도록 여러 개의 카드팩을 조합해서 가장 비싸게 구매하는 방법을 찾기- DP 사용점화식은 아래와 같다dp[i] = max(dp[i], dp[i-j] + input[j-1])i장을 구매할 때,j장짜리 카드팩을 한 번 사고,나머지 i-j장을 가장 비싸게 살 방법을 dp[i-j]에서 가져오는 것.풀이let n = Int(readLine()!)!let input = readLine()!.split(separator: " ").map {Int($0)!}var dp = [Int](repeating: 0, count: n+1)for i..

https://www.acmicpc.net/problem/1475import Foundationlet input = readLine()!var arr = Array(repeating: 0, count: 10)for char in input { if let num = Int(String(char)) { arr[num] += 1 }}// 6에 몰아넣음, 홀수여도 올림을 해야해서 + 1arr[6] = (arr[6] + arr[9] + 1) / 2arr[9] = 0print(arr.max()!)

https://www.acmicpc.net/problem/9465 풀이 아이디어 일정한 규칙성이 있어서 dp로 풀이했습니다.점화식은 아래와 같습니다. dp[0][i] = max(dp[1][i-1], dp[1][i-2]) + board[0][i]dp[1][i] = max(dp[0][i-1], dp[0][i-2]) + board[1][i]n이 1인 경우등도 잘 신경써줍니다(한번 틀림..)자세한 풀이는 아래와 같습니다. 풀이let t = Int(readLine()!)!for _ in 0..

https://www.acmicpc.net/problem/7569 풀이 아이디어그래프 탐색 문제입니다.Y축까지 있으므로 3차원 배열을 사용합니다.이동 방향은 기본적인 상하좌우에서 위 아래가 추가된 6개로 이동합니다. 자세한 풀이는 아래와 같습니다. 풀이import Foundation// 가로(m), 세로(n), 높이(h)let input = readLine()!.split(separator: " ").map { Int($0)! }let m = input[0], n = input[1], h = input[2]// 3차원 배열 graph[h][n][m] 초기화var graph = [[[Int]]]()for _ in 0..= h || ny = n || nx = m { continue ..

https://www.acmicpc.net/problem/1303 풀이 아이디어그래프 탐색문제입니다.적군과 아군의 경우 모두 조사해야합니다.매번 bfs로 탐색하여 결과값의 제곱만큼 += 해주어 결과를 출력합니다.자세한 풀이는 아래와 같습니다. 풀이let nm = readLine()!.split(separator: " ").map { Int($0)! }let (m, n) = (nm[0], nm[1])let dn = [0, 0, -1, 1]let dm = [-1, 1, 0, 0]var graph = [[String]]()var isVisited = Array(repeating: Array(repeating: false, count: m), count: n)var whiteCount = 0var blueCou..

풀이 아이디어힙 구현 문제입니다.풀이struct Heap { private var array: [T] = [] private let isOrderedBefore: (T, T) -> Bool init(isMinHeap: Bool = true) { self.isOrderedBefore = isMinHeap ? { $0 $1 } } var isEmpty: Bool { array.isEmpty } var count: Int { array.count } var peek: T? { array.first } /// 요소 추가 (O(log n)) mutating func insert(_ value: T) { array.ap..

https://www.acmicpc.net/problem/14248 풀이 아이디어이차원 그래프를 이용한 그래프탐색 문제입니다이동방향은 좌 우 모두 가능하므로 [-1, 1] 로 지정합니다. 풀이let n = Int(readLine()!)!let graph = readLine()!.split(separator: " ").map { Int($0)! }//인덱스 맞추기let s = Int(readLine()!)! - 1var isvisited = Array(repeating: false, count: n)let direction = [-1, 1]func dfs(position: Int) { if position = n || isvisited[position] == true { retur..