반응형
https://programmers.co.kr/learn/courses/30/lessons/17682
스택을 이용해서 간단히 풀었음. 단지 10일 때 0 중복 예외만 신경써주면 됨.
#include<iostream>
#include <string>
#include<stack>
using namespace std;
int solution(string dartResult) {
int answer = 0;
stack<int> sta;
for(int i = 0; i < dartResult.size(); i++)
{
if(i < dartResult.size() -1 && dartResult[i] == '1' && dartResult[i+1] == '0')
{
sta.push(10);
i++;
}
else if(dartResult[i] >= '0' && dartResult[i] <= '9')
{
sta.push(dartResult[i] -'0');
}
else if(dartResult[i] == 'D')
{
int num = sta.top();
sta.pop();
sta.push(num*num);
}
else if(dartResult[i] == 'T')
{
int num = sta.top();
sta.pop();
sta.push(num*num*num);
}
else if(dartResult[i] == '*')
{
if(sta.size() >= 2)
{
int num1 = sta.top()*2;
sta.pop();
int num2 = sta.top()*2;
sta.pop();
sta.push(num2);
sta.push(num1);
}
else if(sta.size() == 1)
{
int num = sta.top()*2;
sta.pop();
sta.push(num);
}
}
else if(dartResult[i] == '#')
{
int num = sta.top();
sta.pop();
sta.push(num*(-1));
}
}
while(!sta.empty())
{
answer += sta.top();
sta.pop();
}
return answer;
}
반응형
'Algorithm' 카테고리의 다른 글
2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2020.05.08 |
---|---|
2018 KAKAO BLIND RECRUITMENT[1차] 캐시 (0) | 2020.05.08 |
2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도 (0) | 2020.05.08 |
2018 KAKAO BLIND RECRUITMENT[1차] 추석 트래픽 (0) | 2020.05.08 |
1248. [S/W 문제해결 응용] 3일차 - 공통조상 (0) | 2020.05.07 |