본문 바로가기

코딩 테스트/프로그래머스 코딩테스트

[1차] 다트 게임

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