Algorithm
다이나믹 프로그래밍 - 개미 전사(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 let n = 4 let k = [1,3,1,5] var dp = Array(repeating: 0, count: 100) // dp[0] 위치에 1 추가 dp[0] = k[0] // dp[1] 위치에 입력받은 k배열의 0,1위치값중 큰 값 추가 dp[1] = max(k[0],k[1]) for i in 2.. k = |1|3|1|5| 창고가 1개일때 -> 1 창고가 2개일때 -> 3 창고가 3개일때 -> 3 창고가 4개일때 -> 8 최소한 한칸 이상 떨어진 식량창고를 약탈해야하기 때문에 점화식을 구해보면 현재위치의 -1의 위치의 값, 현재위치의 -..
다이나믹 프로그래밍 - 1로 만들기(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 //input var n = 26 // 입력조건 최대값 30000 + 1 크기의 dp테이블 선언 var dp = Array(repeating: 0, count: 30000 + 1) // 시작을 2로 하는 이유는 // 1을 만들어야 하기 때문에 0과 1은 계산 X for i in 2.. dp[i-1] + 1 = 1 2로 나눠지는 경우 -> dp[i/2] + 1 = 1 둘중 작은 경우 1 idx = |0|1|2|3|4|5|6| dp = |0|0|1|0|0|0|0| i = 3 1을 빼는 경우 -> dp[i-1] + 1 = 2 3으로 나눠지는 경우 -> ..
이진 탐색 - 떡볶이 떡 만들기(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 // 입력 조건 // 4 6 // 19 15 10 17 import Foundation let input = readLine()!.split(separator: " ").map({Int(String($0))!}) var heightArr = readLine()!.split(separator: " ").map({Int(String($0))!}) let n = input[0] let target = input[1] var start = 0 var end = heightArr.max()! while true { if start > end { print(..
이진 탐색 - 부품 찾기(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 // 입력 예시 // 5 // 8 3 7 9 2 // 3 // 5 7 9 import Foundation let n = Int(readLine()!)! let componentArr = readLine()!.split(separator: " ").map({Int(String($0))!}).sorted() let m = Int(readLine()!)! let targetArr = readLine()!.split(separator: " ").map({Int(String($0))!}) var resultArr = [String]() for i in 0...
정렬 - 두 배열의 원소 교체(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 let inputA = [1,2,5,4,3] let inputB = [5,5,6,6,5] let n = 5 let k = 3 var aArr = inputA.sorted() var bArr = inputB.sorted().reversed().map({$0}) for i in 0..
정렬 - 성적이 낮은 순서로 학생 출력하기(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 let n = 2 var input = [["홍길동", "95"], ["이순신","77"]] var arr = [(String,Int)]() var leftArrCount = 1 for i in 0..
정렬 - 위에서 아래로(Swift)
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다. 문제 저작권 문제가 될 수 있어 문제는 삭제합니다. 풀이 코드 let n = 3 var arr = [15,27,12] var leftArrCount = 1 for i in 1..
Level2 - 타겟넘버(Swift)
var numbersCP = [Int]() var targetCP = 0 var result = 0 func solution(_ numbers:[Int], _ target:Int) -> Int { numbersCP = numbers targetCP = target dfs(0,0) return result } func dfs(_ sum: Int, _ depth: Int) { if depth == numbersCP.count { if sum == targetCP { result += 1 } return } dfs(sum + numbersCP[depth], depth + 1) dfs(sum - numbersCP[depth], depth + 1) }