• toc {:toc}

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

  • isdigit() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ›์€ ์ž…๋ ฅ์ด ์ˆซ์ž์ธ์ง€, ๋ถ€ํ˜ธ์ธ์ง€๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค.

55-50+40 ๊ฐ€ ์ž…๋ ฅ์ธ ๊ฒฝ์šฐ, 55-(50+40)์™€ ๊ฐ™์ด -๊ฐ€ ๋‚˜์™”์„ ๋•Œ, ๋’ค์— ์žˆ๋Š” +๋“ค์„ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด -๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด๋Š” ์ฆ‰, -๊ฐ€ ๋‚˜์˜จ ๊ฒฝ์šฐ ๋’ค์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ์ˆซ์ž๋“ค์„ ๋นผ์ฃผ๋ฉด ๋˜๊ณ , -๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ „๋ถ€ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

55-50+40+30+20+10 ์ด๋ผ๋ฉด 55-(50+40+30+20+10) ์ด๋ฏ€๋กœ ์ „๋ถ€ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.
55-(50+40+30)-(20+10) ์ด๋ผ๋ฉด 55-(50+40+30)-(20+10) ์ด๋ฏ€๋กœ ์ค‘๊ฐ„์— -๊ฐ€ ๋“ค์–ด๊ฐ€๋„ -๊ฐ€ ์ผ๋‹จ ํ•œ ๋ฒˆ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋’ท ์ˆซ์ž๋Š” ์ „๋ถ€ ๋นผ์ฃผ๋ฉด ๋œ๋‹ค.

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
 
    string input, num;
 
    cin >> input;
 
    int start = 0, temp=0, idx = 0, is_minus=0, res=0;
 
    // - +++์˜ ๊ฒฝ์šฐ, -๊ฐ€ ์—ฐ์†๋˜๋Š” ๊ฒฝ์šฐ, 
    for(int i=0; i<input.length(); i++){
        if(isdigit(input[i])){
            temp = temp*10 + (input[i]-48);
        }
        else{
            if(is_minus==1){
                res -= temp;
            }
            else{
                if(input[i] == '-'){
                    is_minus = 1;
                    res += temp;
                }
                else{
                    res += temp;
                }
            }
            temp = 0;
        }
    }
    if(is_minus) res -= temp;
    else res += temp;
    
    cout << res << '\n';
 
    return 0;
}