좋은 코드를 만들기 위해 메서드의 시간복잡도를 이해하는 것은 중요합니다 다음과 같은 코드는 시간 초과가 발생하는 코드입니다.당연한거지만 실수할 수 있으므로 하나하나 뜯어보는 습관이 중요합니다. filter 클로저 내부에 min 을 사용해버리면 filter 의 시간복잡도는 O(n) 이고 min 또한 O(n) 이므로 O(n^2)이 되어 버립니다.func solution(_ arr:[Int]) -> [Int] { let result = arr.filter { $0 != arr.min()! } return (result.isEmpty || result.count == 1) ? [-1] : result} 이를 해결하기 위해서는 min 을 한번만 사용할 수 있도록 다음과 같이 구현합니다.func solu..
프로그래머스 - 소수 만들기
·
Algorithm/programmers
import Foundationfunc check(_ n: Int) -> Bool { if n Int { var answer = 0 for i in 0..
프로그래머스 - 비밀지도 (카카오 블라인드 채용)
·
Algorithm/programmers
import Foundationfunc solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] { var answer: [String] = [] var map1: [[Int]] = [] var map2: [[Int]] = [] for i in arr1 { var answerStack: [Int] = [] var tmp = i while tmp != 0 { answerStack.append(tmp % 2) tmp /= 2 } answerStack.reverse() while answerStack.count
프로그래머스 - 다트 게임 (카카오 블라인드 채용)
·
Algorithm/programmers
import Foundationfunc solution(_ dartResult:String) -> Int { var dartResult = dartResult.map{ $0 } var pointStack: [Int] = [] var tmpPoint = "" var optionCheck = false var savePoint = 0 while !dartResult.isEmpty { let current = dartResult.first func saveAtStack() { pointStack.append(savePoint) savePoint = 0 tmpPoint = "" } ..
프로그래머스 - 실패율 2019 KAKAO BILND RECRUITMENT (카카오)
·
Algorithm/programmers
시간초과 문제import Foundationfunc solution(_ N:Int, _ stages:[Int]) -> [Int] { let failedList: [Int] = Array(1...N).map { index in stages.filter { $0 == index }.count } let challengedList: [Int] = Array(1...N).map { index in stages.filter { $0 >= index }.count } var list: [(Int,Double)] = Array(1...N).map { index in let failed = failedList[index-1] let chall..