728x90
내 풀이
- string을 돌면서 숫자면 score에 담는다. 숫자가 이어서 나올 경우 먼저 나온 수가 10의자리로 밀리도록 했다.
숫자가 나왔을 때는 score을 0으로 초기화하지 않고 다시 돌려서 이후에도 쓸 수 있게 해줬다. - 특수문자, 특히 *이 나왔을 때는 앞의 숫자까지 2배가 돼야한다. 처음에 *이 나왔을 경우 자신만 2배가 되게 했다.
#include <string>
#include <vector>
using namespace std;
int solution(string dartResult) {
int answer=0;
vector<int> with_bonus;
int score = 0;
for (int i = 0; i < dartResult.size(); i++) {
if (dartResult[i] >= '0' && dartResult[i] <= '9') {
score = score * 10 + dartResult[i] - '0';
continue;
}
else if (dartResult[i] == 'S') with_bonus.push_back(score);
else if (dartResult[i] == 'D') with_bonus.push_back(score*score);
else if (dartResult[i] == 'T') with_bonus.push_back(score*score*score);
else if (dartResult[i] == '*') {
if (with_bonus.size() != 1) with_bonus[with_bonus.size()-2] *= 2;
with_bonus.back() *= 2;
}
else if (dartResult[i] == '#') {
with_bonus.back() *= -1;
}
score = 0;
}
for (int i = 0; i < with_bonus.size(); i++) {
answer += with_bonus[i];
}
return answer;
}
어렵다...
'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
[C++] 프로그래머스 - 문자열 다루기 기본 (0) | 2021.07.23 |
---|---|
[C++] 프로그래머스 - 문자열 내 마음대로 정렬하기 (0) | 2021.07.22 |
[C++] 프로그래머스 - 비밀지도 (0) | 2021.07.21 |
[C++] 프로그래머스 - 3진법 뒤집기 (0) | 2021.07.18 |
[C++] 프로그래머스 - 실패율 (pair, sort - bool) (0) | 2021.07.18 |