일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 4796
- 1620
- 18111
- 소수 체크
- BOJ
- mermaid js
- n^2 배열 자르기
- 깊이 우선 탐색
- 브루트포스 알고리즘
- javascript
- Git Convention
- 5525
- 2018 KAKAO BLIND RECRUITMENT
- react
- C++
- Hasing
- 구간 합 구하기 4
- 없는 숫자 더하기
- 정수 삼각형
- 프로그래머스
- colorSyntax
- 10162
- 위클리 챌린지
- 옵셔널 체이닝 연산자
- codeSyntaxHighlight
- 이분탐색
- 다이내믹 프로그래밍
- js
- 숫자 문자열과 영단어
- 주식 가격
Archives
- Today
- Total
개발하는 kim-hasa
[c++][BOJ][1541] 잃어버린 괄호 본문
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
괄호가 없는 수식에 괄호를 씌워서 최대한 작은 숫자를 만드는 문제입니다.
+인 경우 그냥 더하다가 , -가 나오는 순간 괄호를 씌웁니다. 그 이후 , 덧셈은 계속 minusSum에 더해줍니다.
그러다 -가 나오는 순간 , 괄호를 앞에 씌워서 지금까지 더한 minusSum을 sum에서 빼줍니다.
또한 마찬가지로 minusSum을 0으로 만들고 다시 더합니다.
마지막에 숫자가 하나 남는데 , -가 있었다면 minusSum에 더하고 sum에서 빼줍니다.
-가 없었다면 그냥 sum에 더하고 리턴합니다.
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
cin >> str;
int index = 0;
bool minus = false;
int minusSum = 0;
string count;
int sum = 0;
while(str.length() > index){
char c = str[index];
if(c == '+'){
count = str.substr(0, index);
if(minus == false){
sum += stoi(count);
}
else {
minusSum += stoi(count);
}
str = str.substr(index+1);
index = 0;
}
else if(c == '-'){
count = str.substr(0, index);
if(minus == false){
minus = true;
sum += stoi(count);
}
else {
minusSum += stoi(count);
sum -= minusSum;
minusSum = 0;
}
str = str.substr(index+1);
index = 0;
}
else {
index++;
}
}
if(minus == false){
sum += stoi(str);
} else {
minusSum += stoi(str);
sum -= minusSum;
}
cout << sum;
}
'Algorithm > BOJ' 카테고리의 다른 글
[c++][BOJ][1620] 나는야 포켓몬 마스터 이다솜 (0) | 2022.03.01 |
---|---|
[c++][BOJ][5525] IOIOI (0) | 2022.03.01 |
[c++][BOJ][2606] 바이러스 (0) | 2022.03.01 |
[c++][BOJ][2579] 계단 오르기 (0) | 2022.03.01 |
[c++][BOJ][18111] 마인크래프트 (0) | 2022.03.01 |