프로그래머스 - 피보나치 수 feat. dp (다이나믹 프로그래밍)
·
Algorithm/programmers
최적화 이전func solution(_ n:Int) -> Int { var arr = [0,1,1,2] if n 최적화 이후func solution(_ n:Int) -> Int { var arr = [0,1,1,2] while arr.count
프로그래머스 - 다음 큰 숫자
·
Algorithm/programmers
진수변환을 하기 위해서는 String 의 radix 파라미터를 사용할 수 있겠습니다 import Foundationfunc solution(_ n:Int) -> Int{ var answer:Int = n+1 let nOne = String(n, radix: 2).filter { $0 == "1" }.count while true { let tmpOne = String(answer, radix: 2).filter { $0 == "1" }.count if nOne == tmpOne { break } answer += 1 } return answer}
프로그래머스 - 이진 변환 반복하기, feat. 이진 변환, 진수 변환
·
Algorithm/programmers
진수 변환을 하는 String 으로는 String(value: string, radix: Int) 를 사용하면 되겠습니다 radix 변환을 사용하지 않고 직접 구현한 코드import Foundationfunc solution(_ s:String) -> [Int] { var tmp = s var totalCount = 0 var zeroCount = 0 while tmp.count > 1 { var one = tmp.filter { $0 == "1" }.count zeroCount += tmp.count - one var stack: [Int] = [] while one > 0 { stack.append(one % ..
프로그래머스 - JadenCase 문자열 만들기 feat. stack
·
Algorithm/programmers
스택을 만들어 removeFirst 를 사용하여 해결해도 되지만 인덱스를 사용하여 해결하는 방법이 성능적으로 뛰어납니다.removeFirst 를 사용하면 모든 인덱스가 계속해서 메모리 내부의 주소값을 바꿔줘야하는 리스트를 감수하지 않는 편이 좋습니다. func solution(_ s:String) -> String { let s = s.map { String($0) } var stack: [String] = [] var index = 0 while index
프로그래머스 - 최솟값 만들기
·
Algorithm/programmers
import Foundationfunc solution(_ A:[Int], _ B:[Int]) -> Int{ var ans = 0 let a = A.sorted() let b = B.sorted(by: >) for i in (0...A.count-1) { ans += a[i] * b[i] } return ans}
프로그래머스 - 올바른 괄호
·
Algorithm/programmers
괄호 문제는 스택을 사용하여 해결할 수 있습니다 스택 대신 Int 로 해결분명 스택을 구현하여 해결할 수 있지만 배열에 값을 넣었다 빼는 것은 효율성이 떨어질 수 있습니다.그렇기 때문에 문자열의 길이가 크게 주어지는 조건인 경우 Int 를 사용하는 것이 정답이 될 수 있겠습니다. 개선 전 코드아래처럼 복잡하게 코드를 만드는 방법도 분명 가능한 코드이지만 더 나은 코드들도 존재합니다.import Foundationfunc solution(_ s:String) -> Bool{ var ans:Bool = false var left = 0 var right = 0 for (index, value) in s.enumerated() { i..
ytw_developer