https://www.acmicpc.net/problem/1541

+, -, 양수로 이루어진 식에서 괄호를 이용하여 최소 값을 만드는 문제
‘-’ 부호가 나오면, 다음 ‘-’ 부호 앞까지 괄호로 묶어주면 빼는 수의 값이 최대가 되어 가장 작은 값이 될 것 같음
예를 들어
10 + 20 - 30 + 10 + 20 - 30 + 10
→ 10 + 20 - ( 30 + 10 + 20) - (30 + 10)
→ 30 - 60 - 40 = -70
→ 입력값의 ‘-’ 부호 기준으로 배열을 나눔
위 예시를 이용하면,
input: “10 + 20 - 30 + 10 + 20 - 30 + 10”
arr = [”10+20”, “30+10+20”, “30+10”]
첫 번째 인덱스 값에서 나머지 모든 배열의 값을 빼주면 정답
→ arr[0] - arr[1] - [arr2] ⇒ 정답
30 - 60 - 40 = -70
첫 번째 시도
- 입력 값을 ‘-’ 를 기준으로 나누어 배열로 만듦
- 해당 배열의 첫 번째 인덱스 값에서 다른 인덱스 값을 모두 빼면 정답!
let arr = readLine()!.split(separator: "-") // '-' 연산자 기준으로 배열을 나눔
var answer = 0 // 출력값
for (index, equation) in arr.enumerated() {
let sum = equation.split(separator: "+").map{Int($0)!}.reduce(0, +) // 괄호 내 수들의 합
answer = index == 0 ? sum : answer - sum // 배열의 첫 번째는 값만 더하고 다음 값들은 모두 빼줌
}
print(answer)

'알고리즘 문제(Swift)' 카테고리의 다른 글
알고리즘 문제(Swift) - 백준 - 2579 (계단 오르기) (0) | 2025.01.10 |
---|---|
알고리즘 문제 - 백준 - 1715 (카드 정렬하기) (1) | 2025.01.10 |
알고리즘 문제(Swift) - 백준 - 1931 (회의실 배정) (0) | 2025.01.09 |
알고리즘 문제(Swift) - 백준 - 11046 (동전 0) (1) | 2025.01.09 |
알고리즘 문제(Swift) - 백준 - 11650 (좌표 정렬하기) (0) | 2025.01.06 |