[프로그래머스 Level 1, C++] [1차] 다트 게임

2022. 7. 6. 03:32·정리 전 게시글/공부 관련

문제 : [1차] 다트 게임


풀이 방법

벡터 배열을 하나 만들어서 dartResult를 전부 분해해서 다시 넣었다. 왠지 그렇게 하는게 조건문을 만들 경우 편할 것 같아서 그랬다. 문자열 10은 아스키코드가 따로 없다보니 1이 나오고 그다음 숫자가 0이면 10을 넣고 두칸 건너뛰는 방식으로 분해를 했고 answer 벡터를 만들고 int temp를 만들어서 SDT*#을 각각 계산해주고 temp를 answer 벡터에 넣고 마지막 answer에 answer 벡터의 값을 다 더해주는 방식으로 문제를 풀었다. *#이 나올때가 있고 안나올 때가있으며 10이라는 숫자가 나올 수 있으니 그걸 어떻게 해야할까 고민하는데 시간을 썼고 숫자를 어떻게 인식할지 거기에 시간을 많이 쓴거같다.


소스 코드

#include <string>
#include <vector>
#include <cmath>
using namespace std;

int solution(string dartResult) {
    int answer = 0;
    vector<string> arr;
    vector<int> answer_temp;
    
    for(int i=0; i<dartResult.size(); i++) {
        if(dartResult[i] == '1' && dartResult[i+1] == '0') {
            arr.push_back("10");
            i++;
        } 
        else {
            string temp;
            temp.push_back(dartResult[i]);
            arr.push_back(temp);
        }
    }
    
    int temp;
    for(int i=0; i<arr.size(); i++) {
        if(isdigit(arr[i][0]) || arr[i] == "10") {
            if(i != 0 && isdigit(arr[i - 1][0]) == 0 ) {
                answer_temp.push_back(temp);
            }
            temp = stoi(arr[i]);
        }
        else if(arr[i] == "S") {
            temp = pow(temp, 1);
        }
        else if(arr[i] == "D") {
            temp = pow(temp, 2);
        }
        else if(arr[i] == "T") {
            temp = pow(temp, 3);
        }
        else if(arr[i] == "*") {
            temp *= 2;
            if(!answer_temp.empty()) {
                int back_temp = answer_temp.back();
                answer_temp.pop_back();
                back_temp *= 2;
                answer_temp.push_back(back_temp);
            }
        }
        else if(arr[i] == "#") {
            temp *= -1;
        }
    }
    answer_temp.push_back(temp);
    
    for(int & i : answer_temp) {
        answer += i;
    }
    
    return answer;
}
저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[프로그래머스 Level 1, C++] 크레인 인형뽑기 게임  (0) 2022.07.08
[프로그래머스 Level 1, C++] 실패율  (0) 2022.07.07
[프로그래머스 Level 1, C++] 로또의 최고 순위와 최저 순위  (0) 2022.07.06
[프로그래머스 Level 1, C++] [1차] 비밀지도  (0) 2022.07.05
[프로그래머스 Level 1, C++] 내적  (0) 2022.07.05
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [프로그래머스 Level 1, C++] 크레인 인형뽑기 게임
  • [프로그래머스 Level 1, C++] 실패율
  • [프로그래머스 Level 1, C++] 로또의 최고 순위와 최저 순위
  • [프로그래머스 Level 1, C++] [1차] 비밀지도
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이것이자바다
    콜라츠추측
    공개SW개발자대회
    프로그래머스
    파이썬
    마인크래프트강화스크립트
    백준
    이것이자바다연습문제
    자바
    캡스톤디자인
    이것이자바다확인문제
    파이어베이스
    컨텍스트스위칭
    C언어강좌
    티스토리스킨편집
    c언어초보
    마크
    티스토리HTML
    반복하지않는수
    프로그래머스PCCE
    빅데이터공모전
    스크롤바CSS
    안드로이드
    티스토리반응형2스킨편집
    C언어
    마인크래프트스크립트
    C++강좌
    일본규슈공업대학교
    마크스크립트
    마인크래프트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[프로그래머스 Level 1, C++] [1차] 다트 게임
상단으로

티스토리툴바