본문 바로가기
알고리즘/프로그래머스

[C++] 숫자 문자열과 영단어

by parkkingcar 2023. 5. 23.

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

댓글