분류 전체보기 181

DP(dynamic programming)와 메모이제이션, 피보나치 구현 (feat. swift)

Dynamic Programming : 동적 계획법 먼저 DP의 방식을 살펴보자면 복잡한 문제를 여러 개의 하위 문제(sub-problem)로 나누어서 풀고, sub-problem으로부터 구한 해를 결합해 문제의 답을 도출하는 방식이다. 주로 최단 경로 문제에 쓰인다. 모든 경로에 대해 계산을 하고, 계산 결과를 별도로 저장하여 동일한 sub-problem이 중간에 들어갈 경우 계산 결과값을 불러들이는 방식을 사용한다. 따라서 중복되는 부분에 대해 계산 과정을 생략하기 때문에 sub-problem이 많아지는 경우 많은 시간을 줄일 수 있다. 그리디와 비교를 해보자면, 모든 경로에 대해 계산을 하기 때문에 그리디와 비교하면 시간은 더 오래 걸릴 수 있지만, 문제에 대한 전체적인 최적의 답을 얻을 수 있기 ..

swift ) 프로그래머스 - 체육복

계속 일부 테스트 케이스에서 실패가 떴는데.. 항상 느끼지만 문제 조건을 정말 두 눈 뜨고 잘 봐야 하고.. 테스트케이스도 여러가지로 생각을 해야 하는 것 같다. 테스트케이스에 n = 3, lost = [1,2], reserve = [3,2]를 넣고 돌려보면 어지간해선 해결될 것이라고 생각한다. 아래의 코드로 통과함... var setZero : Set = Set(lost).subtracting(reserve) var setTwo : Set = Set(reserve).subtracting(lost) var haveZero = setZero.sorted() var haveTwo = setTwo.sorted() var count = n - haveZero.count for i in 0..

swift ) 진수 변환

진수 변환이 필요할 때 for문으로 나머지를 계속 넣어주는 식으로 코드를 만들었었는데.......... 스위프트에서는 radix만 이용하면 간단하게 변환할 수 있다. // 1. 10진수를 3진수로 변환 2. 3진수를 다시 10진수로 변환 let n = 125 let ternary = String(n, radix: 3) print(ternary) // 11122 let redecimal = Int(ternary, radix: 3)! print(redecimal) // 125 위는 프로그래머스 알고리즘 문제 풀다가.. 해본 예시 10진수를 n진수로 변환할 때는 String을, n진수를 10진수로 변환할 때는 Int를 사용해주면 끝 응용버전 - 프로그래머스 3진법 뒤집기 -> 주어진 수 n을 3진수로 변환 후..

iOS 2022.05.06