Algorithm/BOJ

백준 1541 잃어버린 괄호

삼쓰 웅쓰 2020. 6. 7. 15:18
728x90

출처: www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

분류: Greedy


+와 -만으로 이루어진 연산이 들어올 때 괄호를 묶어서 최소인 수를 만드는 문제입니다.

+ 연산부터 해주고 - 연산을 해주면 최소의 값을 구할 수 있습니다.

- 로 우선 다 잘라준 다음에 각각을 다 더해주고 마지막에 빼주는 방식으로 해결했습니다.

import Foundation

var str = readLine()!
var plusOpers = str.components(separatedBy: "-")
var minusNumbers = [Int]()

for opr in plusOpers {
    let numbers = opr.components(separatedBy: "+").map({Int($0)!})
    minusNumbers.append(numbers.reduce(0, +))
}

var result = minusNumbers[0]
for i in 1..<minusNumbers.count {
    result -= minusNumbers[i]
}

print(result)

 

이번엔 단순히 +, - 로 잘라주면 되는 형식이었지만... 더 복잡해지면 어떻게 해야할까요 

문자열은 항상 스위프트의 적인 것 같습니다.. 연습만이 살길 🔥

감사합니다.