Algorithm

[Swift 백준] 1541 잃어버린 괄호

Kim Roks 2025. 1. 8. 19:07

문제 해결 아이디어 자체를 떠올리는게 포인트인 문제입니다.
문제 해결 아이디어는 다음과 같습니다.

아이디어

  1. 괄호의 위치를 임의로 설정하여 가장 작은 값을 도출하는 문제입니다.
  2. 덧셈 뺼셈만으로 이루어져있으니, - 를 기준으로 입력값을 분리합니다.
  3. 덧셈을 할 수 있을때까지 모아서 -에 몰아넣어줍니다.

자세한 풀이는 코드의 주석을 참고

풀이

import Foundation

let input = readLine()!
// -로 각 값을 분리해줍니다 이렇게 되면, 예시로 10-20+30-50+40+30 이 들어오면 [10, 20+30, 50+40+30] 이 됩니다
let splitByMinus = input.split(separator: "-")

var result = 0

// 첫번째 값을 떼서 result 에 더해줍니다. +로 이뤄진 덩어리기때문에 무조건 초기값이 되어야합니다.
let first = splitByMinus.first!
let firstGroup = first.split(separator: "+").map { Int($0)! }
result += firstGroup.reduce(0, +)

// 첫번째 값을 제외한 덩어리들을 모두 더해서 초기값에서 뺴줍니다.
for group in splitByMinus.dropFirst() {
    let numbers = group.split(separator: "+").map { Int($0)! }
    print(numbers)
    result -= numbers.reduce(0, +)
}

print(result)