본문 바로가기
Problem-solving/백준

백준(Baekjoon) 1541 C++

by taehee.kim.dev 2020. 2. 27.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <string>
 
using namespace std;
 
/*
    ex) (50 + 30 + 10) - (6 + 4 + 35 + 13) - (35 + 1 + 0 + 2) - (15 + 57)
 
    알고리즘 : '-'문자 이후의 모든 숫자들을 빼면 된다.
 
    연산자의 다음부터 0이 아닌 숫자 이전에 0이 존재한다면 무시한다.
*/
 
string input_str;
int answer = 0;
 
void solve(){
 
    // 빼야하는지 여부 체크 변수
    bool is_minus = false;
    // 숫자 문자열 임시 저장 변수
    string tmp_num_str = "";
 
    // 입력받은 문자열을 한 문자씩 검사
    for(int i = 0; i < input_str.length(); i++){
 
        // 문자가 연산자 문자인 경우와, 숫자 문자인 경우로 나눔.
        if(input_str[i] == '+' || input_str[i] == '-'){
            
            // 연산자 문자인 경우
            // 연산자 문자의 앞 문자까지가 한 숫자이다.
            // is_minus 값에 따라 answer값에 덧셈 또는 뺄셈을 한다.
            if(is_minus){
                answer -= stoi(tmp_num_str);
            }else{
                answer += stoi(tmp_num_str);
            }
 
            // 만약 '-'가 처음으로 나오면, is_minus를 true로 초기화 한다.
            if(input_str[i] == '-')
                is_minus = true;
            
            // tmp_num_str의 값을 ""로 초기화한다.
            tmp_num_str = "";
 
        }else{
            // 숫자 문자인 경우
            // 만약 숫자가 0이고 tmp_num_str == ""  경우, 숫자 맨 앞에 나온 0이므로 무시
            if(input_str[i] == '0' && tmp_num_str == "")
                continue;
 
            // 그 외의 경우는 모두 tmp_num_str 맨 뒤에 이어붙임
            tmp_num_str += input_str[i];
        }
    }
    // for문을 빠져나와서, is_minus값에 따라 마지막 숫자값의 계산을 처리한다.
    if(is_minus){
        answer -= stoi(tmp_num_str);
    }else{
        answer += stoi(tmp_num_str);
    }
 
    cout<<answer;
}
 
void input(){
    cin>>input_str;
}
 
int main(void){
    ios_base :: sync_with_stdio(false); 
    cin.tie(NULL); 
    cout.tie(NULL);
    
    input();
    solve();
 
    return 0;
}
cs

'Problem-solving > 백준' 카테고리의 다른 글

백준 - 쿼드트리(1992번) (Python3)  (0) 2020.05.14
백준 - 한수(1065번) (Python3)  (0) 2020.05.13
백준(Baekjoon) 1120 C++  (0) 2020.02.26
백준(Baekjoon) 2875 C++  (0) 2020.02.24
백준(Baekjoon) 2217 C++  (0) 2020.02.24

댓글