[백준] 3273 두 수의 합
·
PS/백준
문제https://www.acmicpc.net/problem/3273 입력n = 수열의 길이arr = 수열x = 만들어야하는 목표1 결과ans: Int = ai + aj로 x를 만들 수 있는 쌍의 수해석1. 각각의 숫자의 개수를 카운팅한다.2. x = 5 , arr = [2,2,3,3] 일 때 만들 수 있는 경우의 수는  (2,3) ,(3,2) 2개다  하지만 두개를 같게 보기때문에 1개이다.다시 말하면 식은 다음과 같다   (ans =  \sum_{i = a_{1}}^{a_{n}} \frac{count(i) + count(j)}{2}) 나누기 2를 하는 이유는 (2,3) = (3,2)므로   코드import Foundationlet n = Int(readLine()!)!let arr = readLine..
[백준] 1202 보석 도둑
·
PS/백준
문제https://www.acmicpc.net/problem/1202 입력n = 보석 개수k = 가방 개수 jewels: [(Int,Int)] = (보석의 무게, 보석의 가치)bags: [Int] = 각 가방의 담을 수 있는 최대 무게 1 결과ans: Int = 담을 수 있는 최대 보석 가치해석1. 각 보석과 가방을 무게를 기준으로 오름차순으로 정렬한다.2. 내림차순 힙을 통해 각 가방에 담을 수 있는 최대 가치를 담아 준다.3. 모두 합한다.코드import Foundationstruct Heap { var nodes: [T] = [] var count: Int { return nodes.count } var isEmpty: Bool { re..
[백준] 11722 가장 긴 감소하는 부분 수열
·
PS/백준
문제https://www.acmicpc.net/problem/11722입력n: Int = 수열의 길이arr: [Int] = 수열 1 결과ans: Int = 가장 긴 감소하는 부분 수열 길이해석LIS의 형태로 간단한 점화식을 세울 수 있다. dp[i] = i 전까지 가장 긴 감소하는 부분 수열 길이 반복문 한개는 i = 현재 값 , 나머지 반복문 j = i 직전까지총 최대 1000 x 1000을 돌며  arr[j] > arr[i] 일 때 dp 배열을 갱신한다. 코드import Foundationlet n = Int(readLine()!)!let arr = [-1] + readLine()!.components(separatedBy: " ").map{Int($0)!} var dp: [Int] = [Int](r..
UIHostingController
·
iOS/UIKit
정의 swiftUI view를 관리하는 뷰컨틀롤러이다. 구현swiftUI의 TextFiled의 text를 변경하여 UIViewController의 색을 바꾸는 미션을 해보자. 단계는 다음과 같다.SwiftUIView 구현 viewController에 UIHostingController와 함께 등록1. swiftUI TextField 구현struct CustomSwiftUITextView : View { @Binding var text: String var body: some View { TextField("SwiftUI TextField", text: $text) .padding() .background(Color.blue) ..
[백준] 1520 내리막 길
·
PS/백준
문제https://www.acmicpc.net/problem/1520 입력n, m = 지도의 행 , 열 길이 arr: [[Int]] = 각 지점의 높이결과ans: Int = 이동 가능한 총 경로 수해석내리막길인지 판별한후 dfs를 통해 목적지에 도달 후 return을 통해 카운팅을 해주자.  코드import Foundationlet nm = readLine()!.components(separatedBy: " ").map{Int($0)!}let (n,m) = (nm[0], nm[1])var arr: [[Int]] = []for _ in 0.. Int { if x == n-1 && y == m-1 { cache[x][y] = 1 return 1 } if..
[백준] 2294 동전 2
·
PS/백준
문제https://www.acmicpc.net/problem/2294 입력n = 동전의 종류 (1~100)k = 목표 금액 (1~10,000)coins = 각 동전 금액결과ans = k금액을 만들기위해 사용한 동전의 최소 개수. 불가능한 경우에는 -1해석이전에 풀었던 동전1 문제를 최소 개수 구하는 점화식으로 바꾸면 끝dp[i] = i 금액을 만들기위해 사용한 최소 개수 코드import Foundationlet nk = readLine()!.components(separatedBy: " ").map{Int($0)!}let (n, k) = (nk[0], nk[1])var coins: [Int] = []for _ in 0.. k { continue } for i in 0...k-coin { ..