백준 1541 : 잃어버린 괄호
난이도 : 실버 2
시간 : 20분 소요
문제
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
풀이 과정
결과는 "result" 로 선언하였다.
문제 푸는 방법은 간단하다. 첫 번째 수를 제외하고 "-"이면 그 이후에 나오는 "+" 수들을 모두 "result"에서 빼준다.
"-"가 다시 나오면 다시 나온 "-"을 기준으로 이후의 "+" 수들을 모두 "result"에서 빼준다.
최초의 "-"가 나오기 전의 "+"는 모두 result에 더해준다.
"check" 변수를 통해서 앞에 "-"가 나온 상황인지 아닌지를 판단하는 변수로 사용했다.
최종 코드
#include <iostream>
#include <cstring>
using namespace::std;
string e;
int result;
int main(){
int check = 1;
while (true) {
e = cin.peek();
int tmp = 0;
if(e == "\n")
break;
if(e == "-"){
cin.ignore();
e = cin.peek();
cin >> tmp;
result -= tmp;
check = 0;
}else if(e == "+"){
cin.ignore();
e = cin.peek();
cin >> tmp;
if(check == 0){
result -= tmp;
}else{
result += tmp;
}
}else{
e = cin.peek();
cin >> tmp;
result += tmp;
}
}
printf("%d\n", result);
}
'PS' 카테고리의 다른 글
[C++] 백준 1541 - 쉬운 최단거리 (0) | 2023.02.28 |
---|---|
[C++] 백준 1260 - DFS와 BFS (0) | 2023.02.28 |
[C++] 백준 2565 - 전깃줄 (0) | 2023.02.24 |
[C++] 백준 9020 - 골드바흐의 추측 (0) | 2023.02.24 |
[C++] 백준 18870 - 좌표 압축 (0) | 2023.02.24 |
댓글