다트 게임

108번뇌·2021년 7월 15일
0

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


int solution(string dart)
{
	int arrnumber[3] = { 0, };
	int i(0);
	int j(0);

	while (i < 3)
	{
		int number(0);
		number = dart[j] - '0';

		if (dart[j] == '1' && dart[j + 1] == '0')
		{
			number = 10;
			j++
		}

		if (dart[j + 1] == 'S')				number = number;
		else if (dart[j + 1] == 'D')		number = number*number;
		else if (dart[j + 1] == 'T')		number = number*number*number;
		arrnumber[i] = number;

		if (dart[j + 2] == '*')
		{
			if (i == 0)		arrnumber[i] *= 2;
			else//1들어오는 경우입니다.
			{
				arrnumber[i-1] *= 2;
				arrnumber[i] *= 2;
			}
			j++;
		}
		else if (dart[j + 2] == '#')
		{
			arrnumber[i] *= -1;
			j++;
		}
		i++;
		j += 2;
	}

	return arrnumber[0] + arrnumber[1] + arrnumber[2];
}

내가약한 문자열 처리.
이 문제 특이한게 보통 문자열 reading 할 때 for 기반으로 하는데,
이 문제는 감각적으로 while로 돌리는게 더 나음.
이렇게 while 로 루프돌릴때
문자열 인덱스 string sTemp[j] <ㅡ 이런식의 j ++ 다음으로 넘겨주는 부분에 대한 처리를 잘 해야한다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글