![[백준 C++] 1541 : 잃어버린 괄호](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT0B1u%2FbtsNsOjEwX8%2FAFmiOf9lr6KvkZ2TG2tDFK%2Fimg.png)
[백준 C++] 1541 : 잃어버린 괄호CSE/코딩 문제풀이2025. 4. 19. 17:52
Table of Contents
https://www.acmicpc.net/problem/1541
연산자가 +와 -로만 구성되어 있다.
괄호는 자유롭게 사용할 수 있으므로 가장 작은 수를 만든다고 하면 작은 수에서 큰 수를 빼주면 된다.
여기서 큰 수를 빼주는 방법은 간단하게 첫번째로 나오는 마이너스 연산자의 뒤에 있는 숫자를 다 묶어서 더해주면 된다.
즉 이 문제의 포인트는 첫번째로 나오는 마이너스를 찾아주는 것이다.
#include <iostream>
#include <string>
using namespace std;
int calculate(string input)
{
string temp;
int sum = 0;
bool bMinus = false;
for (int i = 0; i < input.length(); i++)
{
if (isdigit(input[i]))
{
temp += input[i];
}
else
{
if (!bMinus)
{
sum += stoi(temp);
temp = "";
if (input[i] == '-')
bMinus = true;
}
else
{
sum -= stoi(temp);
temp = "";
}
}
}
if (!bMinus)
sum += stoi(temp);
else
sum -= stoi(temp);
return sum;
}
int main()
{
string input;
cin >> input;
cout << calculate(input);
return 0;
}
stoi로 숫자들을 뽑아주다가 마이너스 연산자가 나오면 bool 값을 true로 바꾸어 앞으로 나오는 모든 수를 빼준다.
이를 통해 간단하게 최소 값을 구할 수 있다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 21736 : 헌내기는 친구가 필요해 (0) | 2025.04.19 |
---|---|
[백준 C++] 18870 : 좌표 압축 (0) | 2025.03.15 |
[백준 C++] 2805 : 나무 자르기 (0) | 2025.03.10 |
[백준 C++] 17626 : Four Squares (0) | 2025.03.03 |
[백준 C++] 2630 : 색종이 만들기 (0) | 2025.02.25 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!