코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (115)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (9)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • grafana
  • 모니터링
  • 솔라나
  • Immer #ContextAPI
  • Hooks #React
  • 밸리데이터

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[C++] 프로그래머스 - 다트 게임
[C_C++]코딩테스트 연습/[프로그래머스] level 1

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

2021. 7. 21. 21:59
728x90

내 풀이

  1. string을 돌면서 숫자면 score에 담는다. 숫자가 이어서 나올 경우 먼저 나온 수가 10의자리로 밀리도록 했다.
    숫자가 나왔을 때는 score을 0으로 초기화하지 않고 다시 돌려서 이후에도 쓸 수 있게 해줬다.
  2. 특수문자, 특히 *이 나왔을 때는 앞의 숫자까지 2배가 돼야한다. 처음에 *이 나왔을 경우 자신만 2배가 되게 했다.

 

#include <string>
#include <vector>

using namespace std;

int solution(string dartResult) {
    int answer=0;
    vector<int> with_bonus;
    int score = 0;
    for (int i = 0; i < dartResult.size(); i++) {
        if (dartResult[i] >= '0' && dartResult[i] <= '9') {
            score = score * 10 + dartResult[i] - '0';
            continue;
        }
        else if (dartResult[i] == 'S') with_bonus.push_back(score);
        else if (dartResult[i] == 'D') with_bonus.push_back(score*score);
        else if (dartResult[i] == 'T') with_bonus.push_back(score*score*score);
        else if (dartResult[i] == '*') {
            if (with_bonus.size() != 1) with_bonus[with_bonus.size()-2] *= 2;
            with_bonus.back() *= 2;
        }
        else if (dartResult[i] == '#') {
            with_bonus.back() *= -1;
        }
        score = 0;
    }
    for (int i = 0; i < with_bonus.size(); i++) {
        answer += with_bonus[i];
    }

    return answer;
}

 

 

 

어렵다...

'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글

[C++] 프로그래머스 - 문자열 다루기 기본  (0) 2021.07.23
[C++] 프로그래머스 - 문자열 내 마음대로 정렬하기  (0) 2021.07.22
[C++] 프로그래머스 - 비밀지도  (0) 2021.07.21
[C++] 프로그래머스 - 3진법 뒤집기  (0) 2021.07.18
[C++] 프로그래머스 - 실패율 (pair, sort - bool)  (0) 2021.07.18
    '[C_C++]코딩테스트 연습/[프로그래머스] level 1' 카테고리의 다른 글
    • [C++] 프로그래머스 - 문자열 다루기 기본
    • [C++] 프로그래머스 - 문자열 내 마음대로 정렬하기
    • [C++] 프로그래머스 - 비밀지도
    • [C++] 프로그래머스 - 3진법 뒤집기
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바