포스트

프로그래머스 Lv.1 - 숫자 문자열과 영단어 (2021 카카오 인턴)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 프로그래머스 Lv.1 - 숫자 문자열과 영단어 (2021 카카오 인턴)
// https://school.programmers.co.kr/learn/courses/30/lessons/81301
//
// [문제]  일부 자릿수가 영단어로 바뀐 문자열 s에서 원래 숫자를 반환
// [제약]  s 길이 1~50 / "zero"·"0"으로 시작 안 함 / 결과는 1~2,000,000,000
// [입출력]  "one4seveneight"→1478 / "23four5six7"→234567 / "123"→123
//
// 풀이: 각 영단어를 대응 숫자로 치환한 뒤 정수 변환 — O(|s|)

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    vector<string> words = {"zero", "one", "two", "three", "four",
                            "five", "six", "seven", "eight", "nine"};
    for (int i = 0; i < 10; i++) {
        size_t pos;
        while ((pos = s.find(words[i])) != string::npos) {
            s.replace(pos, words[i].size(), to_string(i));
        }
    }
    return stoi(s);
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.