λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ”₯ PS(Problem Solving) πŸ”₯/BOJ

[BOJ] #1541 μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ

by dar0m! 2019. 9. 4.
μ‹œκ°„ μ œν•œ λ©”λͺ¨λ¦¬ μ œν•œ μ •λ‹΅ λΉ„μœ¨
2 초 128 MB 49.978 %

 

 

1541번: μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ

첫째 쀄에 식이 주어진닀. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으둜 이루어져 있고, κ°€μž₯ 처음과 λ§ˆμ§€λ§‰ λ¬ΈμžλŠ” μˆ«μžμ΄λ‹€. 그리고 μ—°μ†ν•΄μ„œ 두 개 μ΄μƒμ˜ μ—°μ‚°μžκ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ³ , 5μžλ¦¬λ³΄λ‹€ 많이 μ—°μ†λ˜λŠ” μˆ«μžλŠ” μ—†λ‹€. μˆ˜λŠ” 0으둜 μ‹œμž‘ν•  수 μžˆλ‹€.

www.acmicpc.net

κ΄„ν˜Έ 없이 μ£Όμ–΄μ§€λŠ” 식에 μž„μ˜λ‘œ κ΄„ν˜Έλ₯Ό μ³μ„œ κ²°κ³Όλ₯Ό μ΅œμ†Œλ‘œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

μ’€λ§Œ 생각해보면 μ•Œ 수 μžˆλ“―μ΄, λΊ„μ…ˆ μ—°μ‚°(-)을 λ§Œλ‚˜κΈ° μ΄μ „κΉŒμ§€λŠ” 무쑰건 λ§μ…ˆ μ—°μ‚°(+)만 ν•˜λ‹€κ°€ 졜초둜 λΊ„μ…ˆ μ—°μ‚°(-)을 λ§Œλ‚œ μ΄ν›„λŠ” λͺ¨λ‘ λΊ„μ…ˆ μ—°μ‚°λ§Œν•˜λ©΄ 닡을 ꡬ할 수 μžˆλ‹€.

κ·Έλž˜μ„œ λ‚˜μ˜ μ½”λ“œλŠ” sign μ΄λΌλŠ” λ³€μˆ˜λ‘œ λΆ€ν˜Έλ₯Ό ν‘œμ‹œν–ˆμ§€λ§Œ ꡳ이 κ·Έλ ‡κ²Œ ν•˜μ§€ μ•Šκ³  μž…λ ₯을 λ°›λŠ” 도쀑에도 닡을 ꡬ할 수 μžˆλŠ” κ°„λ‹¨ν•œ λ¬Έμ œμ˜€λ‹€.

 

λ©”λͺ¨λ¦¬ μ‹œκ°„
1992 KB 0 ms
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
#include<cstdio>
#include<iostream>
#include <string>
using namespace std;
 
char arr[51], sign;
int ans;
string s, num;
 
int main() {
    cin >> s;
 
    sign = '+';
    for (int i = 0; i < s.length(); i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            num += s[i];
        }
        else {
            if (sign == '-') {
                ans -= stoi(num);
                num = "";                    
            }
            else {
                ans += stoi(num);
                num = "";
                if (s[i] == '-')
                    sign = '-';
            }
        }
    }
 
    if (num != "") {
        if (sign == '+') {
            ans += stoi(num);
        }
        else {
            ans -= stoi(num);
        }
    }
    printf("%d", ans);
 
    return 0;
}
 
cs

 

μž…λ ₯을 λ°›λŠ” 도쀑에 μ²˜λ¦¬ν•˜λŠ” μ½”λ“œ.

1
2
3
4
5
6
7
8
9
main(){
   int i=0,n,a; char c;
   for(scanf("%d",&n);scanf("%c",&c),c!=10;){ // μ•„μŠ€ν‚€μ½”λ“œ 10 λ²ˆμ€ NL, new line
      if(c=='-') i=1;
      scanf("%d",&a);
      if(i) n-=a; else n+=a;
   }
   printf("%d",n);
}
cs

λŒ“κΈ€