Algorithm/λ°±μ€€(BOJ)

[λ°±μ€€ BOJ / C++] 1541번: μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ

meeeeejin 2020. 12. 29. 21:22

 

문제링크: www.acmicpc.net/problem/1541

 

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

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

www.acmicpc.net

 

풀이

 

식을 λ§ˆμ΄λ„ˆμŠ€ μ—°μ‚°μžκ°€ λ‚˜μ˜€κΈ° μ „κ³Ό ν›„λ‘œ λ‚˜λˆ μ„œ 생각할 수 μžˆλ‹€. ν•œ 번 λ§ˆμ΄λ„ˆμŠ€ μ—°μ‚°μžκ°€ λ‚˜μ˜¨ ν›„μ—λŠ” 뒀에 λ‚˜μ˜€λŠ” μˆ«μžλ“€μ€ λͺ¨λ‘ λ§ˆμ΄λ„ˆμŠ€λ‘œ 계산할 수 μžˆλ‹€. 

 

예λ₯Ό λ“€μ–΄ 1+1+1-1+1-1+1κ³Ό 같은 식이 μžˆμ„ λ•Œ μ΅œμ†Ÿκ°’μ„ 가지도둝 κ΄„ν˜Έλ₯Ό 치면 1+1+1-(1+1)-(1+1)이 λœλ‹€. ν•œ 번 -κ°€ λ‚˜μ˜€λ©΄ 뒀에 λ‚˜μ˜€λŠ” +λŠ” μ•žμ˜ μ—°μ‚°κ³Ό κ΄„ν˜Έλ‘œ ν•©μ³μ„œ λΊ„μ…ˆμ„ ν•΄μ£ΌλŠ” 것이닀. 

 

λ”°λΌμ„œ bool μžλ£Œν˜•μΈ minusλΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ 이 값이 falseλ©΄ 숫자λ₯Ό λ”ν•˜κ³ , trueλ©΄ λΉΌμ€€λ‹€. λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰μ—λ„ 연산을 진행해야 ν•˜κΈ° λ•Œλ¬Έμ— for문이 i <= s.size()κΉŒμ§€ μ‹€ν–‰λœλ‹€. 

 

 

 

 

μ†ŒμŠ€μ½”λ“œ

 

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
//1541번: μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ
#include <iostream>
#include <string>
 
using namespace std;
 
int solution(string s) {
    int answer = 0;
    bool minus = false;
    string temp = "";
 
    for(int i = 0; i <= s.size(); i++) {
        if(s[i] == '+' || s[i] == '-' || s[i] == '\0') {
            if(minus)
                answer -= stoi(temp);
            else
                answer += stoi(temp);
            temp = "";
            if(s[i] == '-')
                minus = true;
        }
        else {
            temp += s[i];
        }
    }
 
    return answer;
}
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
 
    string s;
    cin >> s;
    cout << solution(s);
 
    return 0;
}
cs

 

 

 

κ³΅λΆ€ν•œ 것을 μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. μˆ˜μ •ν•  뢀뢄이 μžˆλ‹€λ©΄ μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

 

 

 

728x90