2021 카카오 채용연계형 인턴십 코딩테스트 1번
숫자 문자열과 영단어
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
입력받은 문자열 s와 출력 답
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
이 문제는 입력받은 문자열s 에서 zero~nine 에 해당하는 문자를 숫자로 바꾸어 출력하는 문제입니다.
영어 문자열을 찾아 그 문자에 맞는 숫자를 추가합니다.
문자열s를 한글자씩 확인하여 숫자일 경우 answer에 그대로 더하고, 영어일 경우 str에 더하면서 str이 zero~nine이 담겨있는 vector에 존재하는지 확인합니다. 배열에 존재할 경우, 그 문자의 인덱스가 영어문자의 숫자값이기 때문에 answer에 인덱스값을 더하면 됩니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string s) {
int answer = 0;
string str= "";
vector<string> str_to_num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < s.size(); i++){
if(s[i] >= '0' && s[i] <= '9'){
answer *= 10;
answer += stoi(string(1, s[i]));
}
else{
str += s[i];
for(int j = 0; j < str_to_num.size(); j++){
if(str == str_to_num[j]){
answer *= 10;
answer += j;
str= "";
}
}
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[C++] 치킨 쿠폰 (0) | 2023.05.23 |
---|---|
[C++] 다음에 올 숫자 (0) | 2023.05.23 |
[C++] 유한소수 판별하기 (0) | 2023.05.22 |
[C++] 문자열 밀기 (0) | 2023.05.22 |
[C++] (공백분리) 컨트롤 제트 (1) | 2023.05.19 |
댓글