Algorithm
[Swift 백준] 1541 잃어버린 괄호
Kim Roks
2025. 1. 8. 19:07
문제 해결 아이디어 자체를 떠올리는게 포인트인 문제입니다.
문제 해결 아이디어는 다음과 같습니다.
아이디어
- 괄호의 위치를 임의로 설정하여 가장 작은 값을 도출하는 문제입니다.
- 덧셈 뺼셈만으로 이루어져있으니, - 를 기준으로 입력값을 분리합니다.
- 덧셈을 할 수 있을때까지 모아서 -에 몰아넣어줍니다.
자세한 풀이는 코드의 주석을 참고
풀이
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)