🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/340212💡 구현 아이디어레벨은 1~max(diffs) 의 숫자중 하나레벨을 1부터 전부 비교할 수는 없으니 이분탐색으로 범위를 줄여나감💻 코드import Foundationfunc solution(_ diffs:[Int], _ times:[Int], _ limit:Int64) -> Int { let diffs: [Int64] = diffs.map { Int64($0) } let times: [Int64] = times.map { Int64($0) } var low: Int64 = 1 var high: Int64 = -1 var mid: Int64 ..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/140107💡 구현 아이디어d를 기준으로 원을 그려서 x에 대한 y를 구함x가 k의 배수인 경우에 k의 배수인 y 개수 구함💻 코드import Foundationfunc solution(_ k:Int, _ d:Int) -> Int64 { let d: Int64 = Int64(d) let k: Int64 = Int64(k) var i: Int64 = 0 var result: Int64 = 0 while i*i ❌ 틀린 이유 및 틀린 부분⏳ 시간 복잡도O(N) : X값 0~sqrt(d^2) 범위까지만 확인📌 풀이 또는 기억할 정보
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/62048💡 구현 아이디어기울기를 구함최소 공배수를 구함W * H 사각형을 W/GCD * H(GCD) 사각형으로 압축해서 버리는 사각형의 개수를 구함전체 W * H에 대해서 사각형 개수를 구하고 버리는 3번에서 구한 사각형의 개수 * 압축 비율로 전체 중에서 사용가능한 사각형의 개수를 구함💻 코드import Foundationfunc solution(_ w:Int, _ h:Int) -> Int64 { let width: Int64 = Int64(min(w, h)) let height: Int64 = Int64(max(w, h)) // let incline..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/60057💡 구현 아이디어주어진 문자열을 1~문자열길이 만큼으로 각각 나눔나누어진 문자열을 기반으로 압축 진행최소 길이 반환💻 코드import Foundationfunc solution(_ s:String) -> Int { var result: Int = 1001 var str: [String] = Array(s).map { String($0) } for len in 1...str.count { var tempStr: String = "" var cStr: [String] = convertStr(str, len) ..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/134239💡 구현 아이디어구간 구하기(1만들기)각 구간의 넓이 구하기요구하는 범위에 맞게 결과 구하기💻 코드import Foundationfunc solution(_ k:Int, _ ranges:[[Int]]) -> [Double] { var result: [Double] = [] // 최종 구간 넓이 var paths: [Int] = [] // 1로 만드는 순서 var sizes: [Double] = [0] // 각 구간의 넓이 var k = k // 1로 만들기 while k > 1 { paths.append(k) ..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/172927💡 구현 아이디어minerals를 5개씩 잘라서 각 곡괭이를 썼을 때의 피로도를 구함사용할 곡괭이를 선별곡괭이가 모자란 경우 - 전부 사용곡괭이가 남는 경우 - 일부만 사용구해진 피로도를 사용할 곡괭이 개수에 맞게 구분한 뒤 돌 곡괭이로 캤을 때의 피로도 기준으로 정렬다이아 → 철 → 돌 곡괭이를 사용하는 순서로 사용된 피로도 계산💻 코드import Foundationfunc solution(_ picks:[Int], _ minerals:[String]) -> Int { var result: Int = 0 // 결과값 // lifes[idx][pic..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12946💡 구현 아이디어A→C로 N개 원판을 이동하려면 A→B로 N-1개 원판을 이동하고 A→C로 원판을 이동해야한다.💻 코드import Foundationfunc solution(_ n:Int) -> [[Int]] { var path: [[Int]] = [] func hanoi(_ n: Int, _ start: Int, _ end: Int, _ sub: Int) { if n == 1 { path.append([start, end]) return } hanoi(n-1, start, su..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/388351💡 구현 아이디어월~금요일 시간을 뽑아냄시간 비교는 분단위로 진행분단위 시간 = (표현된 시간 / 100 * 60) + (표현된 시간 % 100) = 시의 분 + 분희망 시간이 실제 시간보다 작거나 같으면 통과, 크면 실패한 사람에 대해 전체 통과하면 1 아니면 0결과 반환💻 코드import Foundationfunc solution(_ schedules:[Int], _ timelogs:[[Int]], _ startday:Int) -> Int { var result: Int = 0 var logs: [[Int]] = [] for i in 0.. ..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/81302💡 구현 아이디어좌사단 → 우하단으로 이동하면서 자리에 사람이 있으면 큐에 넣고 큐가 빌때까지 확인 진행해당 자리까지 거리가 3미만이면 조건확인빈자리면 큐에 넣음 / 사람이면 0으로 즉시 종료 / 파티션이면 무시우하단까지 최종적으로 확인이 되면 1을 반환총 5번 반복💻 코드import Foundationfunc solution(_ places:[[String]]) -> [Int] { var result: [Int] = [] for place in places { result.append(isComplete(input: place)) } ret..
🔗 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12905💡 구현 아이디어현재 위치에서 넓이는 왼쪽 대각선 위, 위, 왼쪽의 영향을 받는다3곳중 가장 작은 값에 +1을 한 값이 현재 위치에서 만들 수 있는 정사각형의 길이💻 코드DP를 활용import Foundationfunc solution(_ board: [[Int]]) -> Int { var answer: Int = 0 var checkBoard: [[Int]] = [[Int]]( repeating: [Int]( repeating: 0, count: board[0].count ), c..
