티스토리 뷰
https://www.acmicpc.net/problem/1541
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
string expression, tempStr;
vector<int> v;
int sum = 0, tempNum = 0;
cin >> expression;
for(int i = 0; i < expression.length(); i++){
tempStr += expression[i];
if(expression[i+1] == '+' || expression[i+1] == '-' || i+1 == expression.length()){
v.push_back(stoi(tempStr));
tempStr = "";
}
}
// 사이즈 -1 부터
for(int i = v.size()-1; i >= 0; i--){
if(v[i] <= 0 || i == 0){
if(i == 0){
sum += v[i] + tempNum;
}
else{
sum += v[i] - tempNum;
tempNum = 0;
}
}
else if(v[i] > 0){
tempNum += v[i];
}
}
cout << sum;
}
풀이과정
1. expression으로 받은 모든 스트링을 정수로 변환화여 벡터로 재구성
2. 뒤에서 부터 탐색, 가장 작은 수를 만들기 위해선 - 되는 수가 커야하므로 음수를 만날 때 까지 양수들을 모두 저장
ex ) 10 -5 +10 +20 +30 ==> 10 - (5 +10 +20 +30) 으로 변환
3. 음수를 만나지 못하고 첫 요소에 도달하면 저장한 양수를 더해준다.
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
백준 1789 수들의 합 : C++ (0) | 2021.08.23 |
---|---|
백준 1931 회의실 배정 : C++ (0) | 2021.08.19 |
백준 2839 설탕배달 : C++ (0) | 2021.08.17 |
백준 1032 명령 프롬프트 [C++] (0) | 2021.08.08 |
백준 10989 수 정렬하기 3 [C++] (0) | 2021.08.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 넥사크로
- 부트스트랩
- JSP
- JVM
- 국비교육
- HeidiSQL
- Thymeleaf
- 프로그래머스
- C
- C++
- 인턴
- 오류
- 데이터베이스
- 네트워크
- 오라클
- svn
- Open API
- 백준
- 개발용어
- 환경설정
- CS
- SQL
- CSS
- Java
- 이클립스
- 스프링
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함