https://school.programmers.co.kr/learn/courses/30/lessons/17682#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
int solution(string dartResult) {
int answer = 0;
// cout << "dartResult.length() = " << dartResult.length() << endl;
char str[3][4] = {{0, }, };
// str에 하나씩 쪼개 넣기...
for(int i=0; i<3; i++)
{
for(int j=2; j<dartResult.length(); j++)
{
if(dartResult[j] >= '0' && dartResult[j] <= '9')
{
// dataResult[0 ~ j-1]
// printf("size = %d\n", j);
memcpy(&str[i][0], dartResult.c_str(), j);
dartResult.erase(0, j);
break;
}
}
if(i == 2)
{
memcpy(&str[i][0], dartResult.c_str(), 3);
}
}
// Print
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
printf("%c", str[i][j]);
}
printf("\n");
}
//////////////////////////////////////
// 해석
int sum[3] = {0, };
for(int i=0; i<3; i++)
{
int check = 0;
// Score
int score = 0;
if(str[i][0] == '1' && str[i][1] == '0')
{
score = 10;
check += 2;
}
else
{
score = (int)(str[i][check]) - 48;
check++;
}
printf("score = %d\n", score);
// Bonus
if(str[i][check] == 'S') sum[i] += pow(score, 1);
else if(str[i][check] == 'D') sum[i] += pow(score, 2);
else if(str[i][check] == 'T') sum[i] += pow(score, 3);
check++;
// Option
if(str[i][check] == '*')
{
if(i >= 1)
{
sum[i-1] *= 2;
}
sum[i] *= 2;
}
else if(str[i][check] == '#')
{
sum[i] *= -1;
}
}
///////////////////////// Sum ... /////////////////////////
for(int i=0; i<3; i++)
{
printf("sum = %d\n", sum[i]);
answer += sum[i];
}
cout << "answer = " << answer << endl;
return answer;
}
'코딩 테스트 > 프로그래머스 코딩테스트' 카테고리의 다른 글
다음 큰 숫자 (0) | 2022.11.22 |
---|---|
숫자의 표현 (0) | 2022.11.22 |
JadenCase 문자열 만들기 (0) | 2022.10.04 |
최솟값 만들기 (0) | 2022.10.03 |
올바른 괄호 (0) | 2022.10.03 |