http://codingdojang.com/scode/571?answer=11323
코딩도장
프로그래밍 문제풀이를 통해서 코딩 실력을 수련
codingdojang.com
내용인데 틀렸다.
다트 게임
5
출처 : http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/
2018년 카카오 신입 공채 1차 코딩 테스트 문제입니다.
// ConsoleApplication6.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string str;
//cin >> str;
//S D제곱 T 세제곱
//*을 만나면 이전에 받은 스코어 두배 # -1곱합
//점수는 0~10
int answer = 0;
int score = 0;
int value[4];
int k = 0;
//
str = "1S2D*3T";
str = "1D2S#10S";
str = "1D2S0T";
str = "1S*2T*3S";
str = "1D#2S*3S";
str = "1T2D3D#";
str = "1D2S3T*";
for (int i = 0; i < str.length(); i++)
{
//숫자
if (str.substr(i, 1) >= "0" && str.substr(i, 1) <= "9")
{
//cout << str.substr(i, 1);
//10인경우
if (str.substr(i, 2) == "10")
{
i++;
score = 10;
value[k] = score;
k = k + 1;
}
else
{
score = atoi(str.substr(i, 1).c_str());
value[k] = atoi(str.substr(i, 1).c_str());
k = k + 1;
}
}
else //스코어곱, 보너스 문자
{
if (str.substr(i, 1) == "S")
{
if (str.substr(i + 1, 1) == "*")
{
i++;
score *= 2;
value[k -1] = score * 2;
}
else if (str.substr(i + 1, 1) == "#")
{
i++;
score *= -1;
value[k - 1] = value[k - 1] * (-1);
}
}
else if (str.substr(i, 1) == "D")
{
score *= score;
value[k - 1] = score;
if (str.substr(i + 1, 1) == "*")
{
i++;
score *= 2;
value[k -2] = value[k - 2] * 2;
value[k - 1] = score;
}
else if (str.substr(i + 1, 1) == "#")
{
i++;
score *= -1;
value[k - 1] = value[k - 1] * (-1);
}
}
else if (str.substr(i, 1) == "T")
{
int temp = score;
score *= temp;
score *= temp;
value[k - 1] = score;
if (str.substr(i + 1, 1) == "*")
{
i++;
score *= 2;
value[k - 2] = value[k - 2] * 2;
value[k - 1] = score;
}
else if (str.substr(i + 1, 1) == "#")
{
i++;
score *= -1;
value[k] = value[k] * (-1);
}
}
answer += score;
}
cout << str.substr(i, 1) << endl;
cout << "answer" << answer << endl;
}
answer = value[0] + value[1] + value[2];
cout << answer;
return 0;
}