백준 - 잃어버린 괄호 (1541)

Seoyoung Lee·2023년 1월 30일
0

알고리즘

목록 보기
33/104
post-thumbnail
let input = readLine()!.split(separator: "-")
var answer = 0

for i in 0..<input.count {
    if i == 0 {
        if let number = Int(input[i]) {
            answer += number
        } else {
            answer += input[i].split(separator: "+").map{ Int(String($0))! }.reduce(0, +)
        }
    } else {
        let sum = input[i].split(separator: "+").map{ Int(String($0))! }.reduce(0, +)
        answer -= sum
    }
}

print(answer)
  • 그리디 알고리즘 사용
  • 수식의 값이 최솟값이 되려면 최대한 큰 수를 빼야 한다. → - 사이에 있는 모든 수를 먼저 다 더한 다음 뺀다
  • - 를 기준으로 문자열을 분리할 때 연산자가 모두 + 인 경우(- 가 없는 경우)를 조심해야 한다.
profile
나의 내일은 파래 🐳

0개의 댓글