반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "Codility - TapeEquilibrium" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 | (A[0] + ... + A[P-1]) - (A[P] + ... A[N-1]) | 을 구하는 문제입니다.
반복문을 돌 때마다 reduce를 돌리면 O(N^2)이기 때문에 처음부터 시도하지 않았습니다.
맨 처음 한 번만 전체 합을 구한 뒤 앞의 수를 빼면 범위의 합을 구할 수 있습니다.
결과적으로 O(N)으로 답을 구할 수 있었습니다.
반성문
이번 문제는 좀 많이 틀렸습니다... 문제 이해하기가 왤캐 어려운지..
A[n-1] - 0까지 계산을 해버려서 계속 틀리더라고요 ㅠ..
문제가 제대로 읽힐 때 방심해서 한 두 개씩 놓치는 게 치명적인 거 같아요 정말..
문제를 단어 단위로 꼼꼼이 읽는 습관을 길러야겠습니다.
전체 코드
더보기
import Foundation
public func solution(_ A : inout [Int]) -> Int {
// write your code in Swift 4.2.1 (Linux)
var front = 0, back = A.reduce(0, +)
var result = 0
for (index, num) in A.enumerated() {
front += num
back -= num
let diff = abs(front - back)
if index == 0 {
result = diff
} else if index == A.count - 1 {
break
} else {
result = min(result, diff)
}
}
return result
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형