일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- swift navigationcontroller
- 버튼 피드백
- Tuist
- swift concurrency
- UIKit
- swift 백준
- custom ui
- DP
- swift custom ui
- paragraph style
- rxdatasources
- claen architecture
- identifiable
- traits
- custombottomsheet
- coordinator
- SWIFT
- RxSwift
- swift bottomsheet
- domain data
- 타임라인 포맷팅
- task cancellation
- custom navigation bar
- swift 점선
- button configuration
- swift dashed line
- task cancel
- uikit toast
- BFS
- reactorkit
- Today
- Total
목록swift 백준 (32)
김경록의 앱 개발 여정

https://www.acmicpc.net/problem/16173 풀이 아이디어그래프 탐색 문제입니다bfs를 선호하지만 연습을 위해 재귀를 활용한 dfs로 풀이했습니다.두 방향으로만 이동가능하며 그래프를 넘어가면 즉시 종료시켰습니다.풀이 import Foundationlet n = Int(readLine()!)!var graph = [[Int]]()for _ in 0.. Bool { if x = n || y >= n || visited[x][y] { return false } if graph[x][y] == -1 { return true } visited[x][y] = true let jump = graph[x][y] ..

https://www.acmicpc.net/problem/24480 풀이 아이디어 일반적인 dfs입니다.인접 정점을 내림차순으로 방문한다는 점을 주의해야하는 문제입니다재귀로 풀이했습니다. 풀이let nmr = readLine()!.split(separator: " ").map{Int($0)!}let (n,m,r) = (nmr[0],nmr[1],nmr[2])// []로 repeating하여 생성할 경우 반드시 타입을 선언해야합니다.var graph: [[Int]] = Array(repeating: [], count: n + 1)for i in 0..) { if isVisited[next] == 0 { depth += 1 dfs(node: next) ..

https://www.acmicpc.net/problem/7785 풀이 아이디어해시 문제입니다.최초에 출근 set, 퇴근 set을 받고, subtracting를 통해 남은 사람을 구하여 제출하였는데 오답처리가 되었습니다.이 경우엔 중복 입장의 경우를 처리하지 못하는 게 문제였습니다. 예를 들어, A라는 사람이 2회 출근하고 1회 퇴근했다면 회사에 남은 사람 있어야 하는데제 최초 풀이는 해당 과정은 처리하지 못했습니다. 단순히 하나의 Set에서 inset와 remove를 해주는 걸로 수정하였습니다. let n = Int(readLine()!)!var set = Set()for _ in 0.. $1}resultArr.forEach { print($0)}

풀이 아이디어그래프 탐색 문제입니다.문제를 조금 자세히 읽어봐야하는데초대 인원은 자신의 친구, 친구의 친구까지입니다.본인과의 거리가 2까지인 사람이 초대받는 사람입니다. 방문배열과 거리배열을 사용해서 bfs로 풀이했습니다. 풀이 let n = Int(readLine()!)!let m = Int(readLine()!)!var graph: [[Int]] = Array(repeating: [], count: n + 1)for _ in 0..

https://www.acmicpc.net/problem/18352 풀이 아이디어- 단방향 그래프를 이용한 bfs문제입니다.- 출발점에서 목표치까지 거리를 쟀을 때 특정 거리인 도시를 모두 출력합니다- 해당 문제는 수의 범위가 크므로 큐를 직접 작성하여 풀이합니다.풀이 import Foundation// n 도시개수, m 도로개수, k 목표거리, x 출발번호let nmkx = readLine()!.split(separator: " ").map { Int($0)! }let (n, m, k, x) = (nmkx[0], nmkx[1], nmkx[2], nmkx[3])var graph: [[Int]] = Array(repeating: [], count: n + 1)for _ in 0.. a는 추가하지 않음}//..
풀이 아이디어- 그래프 탐색 문제입니다.- 트리형태가 아니고, 사이클이 일어날 수 있는 그래프이기 때문에 방문 체크에 유의해야 합니다.- 각 노드까지의 거리를 담는 배열을 정의하여 bfs 함수 실행 후에 비교하여 최솟값을 찾아냅니다 풀이import Foundationlet nm = readLine()!.split(separator: " ").map { Int($0)! }let (n, m) = (nm[0], nm[1])var graph: [[Int]] = Array(repeating: [], count: n + 1)for _ in 0.. Int { var isVisited = Array(repeating: false, count: n + 1) var distance = Array(repeati..

https://www.acmicpc.net/problem/11660 풀이 아이디어2차원 배열에서의 누적합 문제입니다. 공식은 다음과 같습니다 S[x2][y2]−S[x1−1][y2]−S[x2][y1−1]+S[x1−1][y1−1] S[x2][y2] : (1,1) ~ (x2,y2)까지의 누적합 (구하고 싶은 영역을 포함한 더 넓은 부분)- S[x1-1][y2] : 위쪽(x1-1 행)까지의 합을 빼줌- S[x2][y1-1] : 왼쪽(y1-1 열)까지의 합을 빼줌+ S[x1-1][y1-1] : 너무 많이 빼진 왼쪽 위 영역을 다시 더해줌 풀이import Foundationlet nm = readLine()!.split(separator: " ").map { Int($0)! }let (n, m) = (nm[0], ..

https://www.acmicpc.net/problem/17390 풀이 아이디어오늘도 구간합 문제입니다.a to b 구간의 구간합은b 까지의 구간 합 - (a - 1) 까지의 구간합 이란걸 그대로 적용하면 됩니다, 다만 문제 중간에 정렬을 요구하니 그 부분만 유의해주시면 됩니다 풀이 let nq = readLine()!.split(separator: " ").map{Int($0)!}let (n,q) = (nq[0], nq[1])var arr = readLine()!.split(separator: " ").map{Int($0)!}// 비내림차순(오름차순) 정렬arr.sort { return $0

풀이 아이디어누적 합 문제입니다.평소 풀어보지 않은 유형이라 문제를 보고 생각나는 대로 풀었더니 시간 초과가 났습니다. 누적 합 문제의 기본 골자는 다음과 같습니다.1. 각 원소의 누적 합을 미리 구해둔다.2. 임의의 수 n부터 m까지의 누적합은 m까지의 누적합에서 n - 1까지의 누적합을 뺀 것과 같습니다. 공식의 숙지가 필요한 문제였습니다.마치 dp 테이블을 미리 채워놓는것과 비슷한 느낌인 거 같아요 풀이let n = Int(readLine()!)!let arr = readLine()!.split(separator: " ").map { Int($0)! }let m = Int(readLine()!)!// 인덱스 계산하기 쉽게 0을 채워줍니다var prefix = [0] + Array(repeating..

풀이 아이디어dp로 풀이했습니다.점화식을 적으려다보니 너무 가독성이 떨어져서 자세한 설명은 코드에 적어놓겠습니다풀이let n = Int(readLine()!)!let minusHP = readLine()!.split(separator: " ").map { Int($0)! } // 체력 소모량let plustHappy = readLine()!.split(separator: " ").map { Int($0)! } // 기쁨 증가량var dp = [Int](repeating: 0, count: 101)for i in 0..