Patrick's Devlog

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

Study/Algorithms Practice

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

Patrick_ 2022. 10. 11. 15:00

1. 개요

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1-1. 설명

네오와 프로도가 숫자놀이를 하고있다. 네오가 프로도에게 숫자를 건낼 때 일부 자릿수를 영단어로 바꾼 카드를 건내주면 프로도는 원래 숫자를 찾는 게임이다. 우리는 숫자를 return 하도록 하는 함수를 구현한다. 

1-2. 제한 사항

 - 입력으로 들어오는 s는 1 이상 50 이하

 - s가 "zero", 0으로 시작하는 경우는 없음


2. 구현

2-1. 풀이

받은 문자열을 반복문을 통해 숫자면 그대로 result에 저장하고, 문자이면 저장한다. 그리고 영문으로 된 숫자가 하나 완성되면 그 숫자에 맞는 수가 저장된다. 

2-2. 코드

#include <string>
#include <vector>

using namespace std;

string nums[10] = {"zero", "one", "two" , "three", "four", "five", "six", "seven", "eight", "nine"};

int solution(string s) {
    string curStr = "", result = "";
    for (char ch : s) {
        if (ch >= '0' && ch <= '9') result += ch;
        else {
            curStr += ch;
            
            for (int i = 0; i < 10; i++) {
                if (curStr == nums[i]) {
                    result += (char) i + '0';
                    curStr = "";
                    break;
                }
            }
        }
    }
    return stoi(result);
}