티스토리 뷰

반응형

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 수학
  • 문자열
  • 그리디 알고리즘
  • 파싱

 


 

⊙ 문제 접근 과정

 

이번 문제의 KeyPoint를 짚고 넘어가자.

 

KeyPoint: 연속해서 두 개 이상의 연산자가 나타나지 않는다.

 

  1. +, -, \0이 아니면 temp에 저장
  2. +, -, \0이면 temp 저장한 값을 stoi 함수를 통해 int형 result에 저장
  3. result에 저장할 때 부호를 bool minus에 따라 바꿔준다.

 

⊙ 문제 풀이

 

#include <iostream>
#include <string>

using namespace std;

string str;
string temp = "";
int result =0;

int main() {
    cin>> str;

    bool minus=false;
    for(auto i=0;i<=str.size();i++) {
        if(str[i]=='+' || str[i]=='-' || str[i]=='\0') {
            if (minus) {
                result-=stoi(temp);
            } else {
                result+=stoi(temp);
            }
            temp="";
            if(str[i]=='-') {
                minus=true;
            }
        } else {
            temp+=str[i];
        }
        
    }
    cout<< result;
}

⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함