알고리즘/기타

[2018 카카오 블라인드 채용 1차 코딩 테스트] 다트 게임

히더 2018. 8. 30. 16:38

2018 KAKAO BLIND RECRUITMENT :: 2018 카카오 블라인드 채용 1차 코딩 테스트 :: 다트 게임


출처 : https://programmers.co.kr/learn/courses/30/lessons/17682


#include <string>

#include <vector>

using namespace std;

vector <int> v;


int solution(string dartResult) {

int answer = 0; int cnt = -1; v.clear();

for (int i = 0; i < dartResult.size(); i++) {

char tmp = dartResult.at(i);

if (tmp >= 48 && tmp <= 57) {

cnt++;

v.push_back(tmp - '0');

if (tmp == 49 && dartResult.at(i + 1) == 48) { v[cnt] = 10; i++; }

}

else if (tmp == 68) { // D

v[cnt] *= v[cnt];

}

else if (tmp == 84) { // T

int t = v[cnt];

v[cnt] *= t; v[cnt] *= t;

}

else if (tmp == 42) { // *

for (int j = cnt; j>=0 && j >= cnt-1; j--) v[j] *= 2;

}

else if (tmp == 35) { // #

v[cnt] *= -1;

}

}


for (int i = 0; i < 3; i++) answer += v[i];



return answer;

}