티스토리 뷰
문제 링크
풀이
이 문제를 풀 때 stoi 함수를 몰랐기 때문에 직접 점수를 10의 자리에 해당되면 곱하면서 증가시켜주었기 때문에 코드가 많이 길지만 결국은 비교하면서 스택 자료구조를 사용하면 문제를 쉽게 풀 수 있다.
더보기
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int solution(string dartResult) {
int answer = 0;
vector<string> numberArray;
vector<int> number;
// Numbering
numberArray.push_back(dartResult.substr(0, 1));
for(int i=1; i<dartResult.length(); i++)
{
if(dartResult[i] >= '0' && dartResult[i] <= '9'
&& !(dartResult[i-1] >= '0'&& dartResult[i-1] <= '9'))
{
numberArray.push_back(dartResult.substr(i, 1));
}
else
{
numberArray.back() += dartResult[i];
}
}
for(int i=0, j = 0; i<numberArray.size(); i++, j=0)
{
number.push_back(numberArray[i][j++] - '0');
while(numberArray[i][j] >= '0' && numberArray[i][j] <= '9')
{
number[i]*=10;
number[i]+= numberArray[i][j++] - '0';
}
switch(numberArray[i][j++])
{
case 'S': ; break; // no operation
case 'D': number[i]*= number[i]; break;
case 'T': number[i]*= number[i] * number[i]; break;
}
if(numberArray[i].length()-1 == j)
{
if(numberArray[i][j] == '*') // '*'
{
number[i]*=2;
if(i > 0)
{
number[i-1]*=2;
}
}
else if(numberArray[i][j] == '#') // '#'
{
number[i] *= -1;
}
}
}
for(int i=0; i<number.size(); i++)
{
answer += number[i];
}
return answer;
}
728x90
반응형
'Programmers Solutions > previous' 카테고리의 다른 글
멀쩡한 사각형(Summer/Winter Coding(2019)) (0) | 2020.07.31 |
---|---|
스킬트리(Summer/Winter Coding(~2018)) (0) | 2020.07.31 |
실패율(2019 카카오 블라인드 채용) (0) | 2020.07.31 |
비밀지도(2018 카카오 블라인드 채용) (0) | 2020.07.31 |
예산(Summer/Winter Coding(~2018)) (0) | 2020.07.31 |
댓글