Free Lines Arrow
본문 바로가기
Algorithm/프로그래머스 알고리즘

[프로그래머스] 다트게임

by skahn1215 2021. 5. 15.
728x90
반응형

문제

예전에 풀었던 문제라서 코드가 지저분하다..

 

분석

조건을 잘 보고 구현을 했다.

 

구현

#include <string>
#include <iostream>
#include <memory.h>

#include <math.h>

using namespace std;
int solution(string dartResult) {
int answer;
  string a;
	a = dartResult;
	
	int aval[3] = { 0 };
	memset(aval, 0, sizeof(aval));
	int i = 0;
	int cnt = 0;
	int flag = 0;


	while (a.length() > i)
	{
		if (a.at(i) >= 'A' && a.at(i) <= 'Z') {
			if ( a.at(i) == 'S') {
				aval[cnt -1] = pow(aval[cnt -1], 1);
			} else if (a.at(i) == 'D') {
				aval[cnt -1] = pow(aval[cnt -1], 2);
			} else if (a.at(i) == 'T') {
				aval[cnt -1] = pow(aval[cnt -1], 3);
			}
		} else if (a.at(i) == '*') {
			if (cnt == 0) {
				aval[cnt -1] * 4;
			} else {
				aval[cnt - 2] *= 2;
				aval[cnt -1] *= 2;
				
			}
		} else if (a.at(i) == '#') {
			aval[cnt -1] *= -1;
		} else {
			aval[cnt] = (aval[cnt]) * 10 + (a.at(i)-'0');
			if (a.at(i+1) - '0' >= 0 && a.at(i+1) - '0' <= 10) {

			} else {
			    cnt++;
		    }
		}
		i++;
	}

	int result = 0;
	result = aval[0] + aval[1] + aval[2];
    answer = result;
    return answer;
}

 

 

문제링크: https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

728x90
반응형

댓글