쌓고 쌓다

[프로그래머스] 숫자 문자열과 영단어 C++ 풀이 본문

알고리즘/프로그래머스

[프로그래머스] 숫자 문자열과 영단어 C++ 풀이

승민아 2022. 6. 25. 13:19

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

전체 코드

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    string number[10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
    string res = "";
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] >= '0' && s[i] <= '9') // 숫자면 그냥 추가
            res += s[i];
        else
        {
            for (int j = 0; j < 10; j++)
            {
                bool flag = false; // 가능한 문자열을 찾았는가?
                for (int k = 0; k < number[j].length(); k++)
                {
                    if (i + k < s.length() && s[i + k] != number[j][k])
                        break; // 문자가 다르기에 j번째 number은 치환 불가능

                    if (k == number[j].length() - 1) // k가 이렇다면 가능한 치환가능
                        flag = true;
                }

                if (flag == true) // 치환 가능하다면 res에 붙이고 길이만큼 i 증가
                {
                    res += to_string(j);
                    i += number[j].length() - 1;
                    break;
                }
            }


        }

    }

    answer = stoi(res); // res를 int로 바꾸어 answer에 저장

    return answer;
}

 

구현 문제라 문제에서 원하는 대로 구현만 하면 풀리는 문제라 따로 설명은 작성하지 않겠습니다.

Comments