본문 바로가기
PS

[C++] 백준 1541 - 잃어버린 괄호

by gamxong 2023. 2. 24.

백준 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

댓글