프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이과정
구상만 잘하면 쉽게 풀 수 있는 문제이다.
첫번째로 할 일은 세 개의 숫자들을 v벡터에 넣는다.
S가 나왔을 땐 1제곱, D가 나왔을 땐 2제곱, T가 나왔을 땐 3제곱
\*이 나왔을 땐 idx - 1과 idx에 2를 곱해주고, #이 나왔을 땐 idx에 -1을 곱해주면 된다.
그럼 v벡터에 점수가 계산되어 있을 것이고, 다 더해주면 점수 합계가 나온다.
#include <vector>
#include <string>
#include <cmath>
using namespace std;
int solution(string dartResult) {
int answer = 0;
string str = "";
vector<int> v;
for(int i = 0; i < dartResult.size(); i++){
if('0' <= dartResult[i] && dartResult[i] <= '9'){
str += dartResult[i];
}
else{
if(str != "") v.push_back(stoi(str));
str = "";
}
}
if(str != "") v.push_back(stoi(str));
int idx = -1;
for(int i = 0; i < dartResult.size(); i++){
if(dartResult[i] == 'S') idx++;
else if(dartResult[i] == 'D'){
idx++;
v[idx] = pow(v[idx], 2);
}
else if(dartResult[i] == 'T'){
idx++;
v[idx] = pow(v[idx], 3);
}
else if(dartResult[i] == '*'){
v[idx - 1] *= 2;
v[idx] *= 2;
}
else if(dartResult[i] == '#'){
v[idx] *= -1;
}
}
for(auto i : v){
answer += i;
}
return answer;
}
'🍞 Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스][Level1] 서울에서 김서방 찾기 c++ (0) | 2022.09.02 |
---|---|
[프로그래머스][Level1] 최소 직사각형 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 부족한 금액 계산하기 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 시저 암호 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 문자열 내림차순으로 배치하기 c++ (0) | 2022.09.02 |