[BOJ] 백준 #1541. 잃어버린 괄호 (C++)
🎨 문제

문제 링크: https://www.acmicpc.net/problem/1541
- 알고리즘 분류: 문자열 처리, 수학
- 난이도: Silver Ⅱ
💬 풀이
입력받은 문자열을 숫자와 연산기호로 끊어서 잘 입력 받는 게(파싱) 그나마 문제였던 것 같다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만들라는 문제 내용 자체는 쉬웠다.
- ’+’나 ‘-‘ 기준으로 입력 받기
👉🏻 i=len번째까지 돌고input[i]=='\0'조건 이용
👉🏻stoi()사용 - ’+’만 있으면 그냥 그대로 계산
‘-‘가 하나라도 나온 뒤부터는 ‘+’를 다 ‘-‘로 바꿔서 계산
👉🏻flag: 마이너스가 나오면flag = true;
👉🏻 좀 주의해야 했던 부분 : ‘-‘를 만나서 flag값을 바꿔주는 것의 순서를 뒤로 빼야된다는 것 ㅇㅇ
👩💻 코드
C++
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int main() {
//freopen("input.txt", "rt", stdin);
string input;
cin >> input;
int len = input.size();
string n;
int ans = 0;
bool flag = false;
for (int i = 0; i <= len; i++) {
if (input[i] == '-' || input[i] == '+' || input[i] == '\0') {
if (flag) {
ans -= stoi(n);
n = "";
}
else {
ans += stoi(n);
n = "";
}
if (input[i] == '-') { flag = true; }
}
else {
n = n + input[i];
}
}
cout << ans;
return 0;
}
댓글남기기