티스토리 뷰
title: "다트 게임"
category: 프로그래머스[Level-1]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-21"
문제 링크
C++
#include <string>
#include <vector>
#include <iostream>
using namespace std;
// 0~10 정수, 문자 S, D, T, *, #
// S, D, T : 1제곱, 2제곱, 3제곱
// * 스타상: 바로 전에 얻은 점수 2배
// # 아차상: 해당 점수 마이너스
int solution(string dartResult) {
int answer = 0;
vector<int> v;
int num = 0;
for(int i=0; i<dartResult.length(); i++){
char c = dartResult[i];
if(c>='0' && c<='9'){
v.push_back(num); // 이전 점수 push, 처음은 0
if(c=='1' && dartResult[i+1]=='0') {
num = 10;
i++; // 다음 정수 문자 skip
}
else num = c - '0';
}
else if(c=='D') num *= num;
else if(c=='T') num *= num*num;
else if(c=='*'){
v.back() *= 2;
num *= 2;
}
else if(c=='#') num *= (-1);
}
v.push_back(num); // 마지막 점수 push
for(auto e: v) answer+=e; // 점수 합
return answer;
}
JavaScript
function solution(dartResult) {
var answer = 0;
const scores = [];
let num = 0;
for (let i = 0; i < dartResult.length; i++) {
const ch = dartResult[i];
if (ch >= "0" && ch <= "9") {
scores.push(num); // 이전 점수 push
if (ch == "1" && dartResult[i + 1] == "0") {
num = 10; // 현재 점수
i++; // 다음 정수 문자 skip
} else {
num = ch - "0"; // 현재 점수
}
} else if (ch == "D") {
num *= num;
} else if (ch == "T") {
num *= num * num;
} else if (ch == "*") {
scores[scores.length - 1] *= 2;
num *= 2;
} else if (ch == "#") {
num = -num;
}
}
scores.push(num); // 마지막 점수 push
scores.some((value) => {
answer += value; // 점수 합치기
});
return answer;
}
728x90
반응형
'Programmers Solutions > Level-1' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2021.02.03 |
---|---|
[프로그래머스] 비밀지도 (0) | 2021.02.03 |
[프로그래머스] 실패율 (0) | 2021.02.03 |
[프로그래머스] 키패드 누르기 (0) | 2021.02.03 |
[프로그래머스] 짝수와 홀수 (0) | 2021.02.02 |
댓글