프로그래머스 - 두 큐 합 같게 만들기 (2022카카오 테크 인턴쉽) 시간초과 해결
·
Algorithm/programmers
시간초과 발생 코드아래대로 구현한다면 로직은 맞지만 시간초과가 발생합니다.이유는 removeFirst() 로 처리하기에는 시간복잡도가 허용하지 않기 때문입니다. removeFirst() 를 사용하게 되면 첫번째 값을 뺀 다음 뒤에있는 모든 값들을 모두 한칸씩 앞으로 땡겨야하는 부담이 발생하기 때문에 로직은 간단해질 수 있지만 성능적인 면은 조금 떨어집니다.func solution(_ queue1:[Int], _ queue2:[Int]) -> Int { var cnt = 0 var q1 = Queue() queue1.forEach { value in q1.enqueue(value) } var q2 = Queue() queue2.forEach { value..
프로그래머스 - 제일 작은 수 제거하기, 시간초과 해결
·
Algorithm/programmers
좋은 코드를 만들기 위해 메서드의 시간복잡도를 이해하는 것은 중요합니다 다음과 같은 코드는 시간 초과가 발생하는 코드입니다.당연한거지만 실수할 수 있으므로 하나하나 뜯어보는 습관이 중요합니다. 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..
ytw_developer
'시간초과 해결' 태그의 글 목록