정수의 덧셈·뺄셈과 괄호로 이루어진 식을 계산해요. 괄호 안을 먼저 계산하고, 같은 괄호 안의 덧셈과 뺄셈은 왼쪽부터 계산해요.
int solution(string expression)을 작성해 식의 값을 반환해 주세요. 숫자는 0~1000의 정수이고 0을 제외한 숫자는 앞에 0이 없어요. 음수 표기는 없지만 계산 결과는 음수일 수 있어요. 단항 부호나 곱셈·나눗셈은 없어요.
문법에서 항은 숫자 또는 괄호로 감싼 식이고, 식은 항 뒤에 + 또는 -와 항이 0번 이상 이어지는 형태예요. 공백은 토큰 사이와 식 앞뒤에만 올 수 있고 숫자 내부에는 없어요. 괄호는 항상 짝이 맞으며 빈 괄호·빈 식은 없어요.
공백을 포함한 길이는 1~100, 괄호 중첩 깊이는 최대 5예요. 문자 종류는 숫자, +, -, (, ), 일반 공백이에요. 연산에 쓰인 숫자가 최대 50개이므로 모든 중간 결과의 절댓값은 50000 이하이고 int로 계산해도 안전해요.
예시 1: expression = "1 - (2 - (3 + 4))" → 6. 가장 안쪽은 7, 다음 괄호는 2-7=-5라서 1-(-5)=6이에요.
예시 2: expression = "10 + 2 - (3 + 4)" → 5. 괄호의 7을 앞에서 계산한 12에서 빼요.
실행 입력은 식 한 줄이에요. 아래 하네스가 공백을 보존해 읽으므로 solution만 작성해요.
예시 입력
1 - (2 - (3 + 4))
예상 결과
6
예시 입력
10 + 2 - (3 + 4)
예상 결과
5
핵심 개념
string-parsing: 문자 종류와 현재 해석 상태를 연결해요.stack-queue: 가장 최근 상태와 먼저 들어온 상태를 구분해요.stl-string: 원본 문자열의 인덱스와 문자 순서를 읽어요.