문제 설명
그리디 알고리즘 문제
입력값이 모두 붙어있기 때문에 string으로 입력 받은 후 숫자를 떼어내 따로 저장시켜줘야 합니다.
입력된 스트링에서 숫자 분리 과정
1. string변수 number에 넣으면서 -, +, 입력받은 문자열의 마지막 문자가 나온다면 이때까지 number에 추가된 문자열을
2. stoi()함수를 통해 int형으로 변환 후 정수형 벡터에 저장시켜줍니다.
3.괄호작업 후 결과값 출력
핵심
1. string은 char, char[]와 달리 끝에 null이 붙지않음
2. string s 초기화: s.clear()
3. string은 stoi 함수를 통해 (string -> int) 변환을 해주어야 함
코드
#include<iostream>
#include<vector>
#include<string>
int main()
{
std::vector<int> v;
std::string s;
std::string number;
int result=0;
std::cin >> s;
for(int i = 0; i < s.length() + 1; i++)
{
//숫자 분리
if(s[i] == '-' || s[i] == '+' || i == s.length())
{
v.push_back(std::stoi(number));
number.clear();
}
number += s[i];
}
for(int i = 0; i < v.size(); i++)
{
//현재값이 음수고 다음 올 값이 양수이면 다음 올 값을 음수로 변환
if(v[i] < 0 && v[i+1] > 0)
v[i+1] = -1 * v[i+1];
result += v[i];
}
std::cout << result;
}