2018 KAKAO BLIND RECRUITMENT (2018 카카오 블라인드 채용 문제)
간단한 구현 문제입니다.
1. 숫자인지 확인
1-1. 현재 숫자가 1이고 다음 숫자가 0인지 확인 (숫자 10 확인)
2. S, D, T에 맞게 1번에서 나온 수를 제곱 처리
3-1. * 인경우 이전에 나온 수를 한번 더 결과값에 더하고 현재 값을 2배로 처리
3-2. # 인경우 현재값에 -1을 곱셈
4. 다음이 숫자이면 현재 값을 결과값에 더하고 이전값에 현재값을 저장, 현재값 초기화.
1~4번 반복
* 숫자가 나왔을 때 결과값에 더해주었으므로 마지막 결과값은 반복문이 끝난 후에 넣어주었습니다.
#include <iostream>
#include <string>
using namespace std;
int solution(string dart)
{
int num = 0;
int prevNum = 0;
int answer = 0;
int length = dart.length();
bool check = false;
for (int i = 0; i < length; ++i)
{
if (dart[i] >= '0' && dart[i] <= '9')
{
if (check)
{
!check;
answer += num;
prevNum = num;
num = 0;
}
num = dart[i] - '0';
if (dart[i] == '1' && dart[i + 1] == '0')
{
num = 10;
++i;
}
check = true;
}
if (dart[i] == 'S')
{
continue;
}
if (dart[i] == 'D')
{
num = num * num;
}
if (dart[i] == 'T')
{
num = num * num * num;
}
if (dart[i] == '*')
{
num *= 2;
answer += prevNum;
}
if (dart[i] == '#')
{
num *= -1;
}
}
return answer + num;
}
'알고리즘' 카테고리의 다른 글
[C++] 프로그래머스 - 뉴스 클러스터링 (0) | 2021.05.14 |
---|---|
[C++] 프로그래머스 - 오픈채팅방 (0) | 2021.05.07 |
[C++] 프로그래머스 - 비밀지도 (0) | 2021.04.30 |
[C++] 프로그래머스 - 메뉴 리뉴얼 (0) | 2021.04.17 |
[C++] 프로그래머스 - 신규 아이디 추천 (0) | 2021.04.15 |