티스토리 뷰

성공 코드(내 코드)

  • 각각의 숫자에 해당하는 문자열을 찾아 숫자로 바꿔준다.
  • 문자열을 치환해주는 함수 replace
    • 문자열.replace(시작 위치, 길이, 치환 문자열)
    • 시작 위치부터 지정한 길이만큼 문자열을 치환 문자로 변환
  • 범위 안에 원하는 값을 찾는 함수 find
    • 문자열.find(검색 문자열)
    • 문자열 앞에서부터 검색을 시작해 검색 문자열이 시작되는 위치를 반환
    • 검색 문자열을 찾지 못한 경우 string::npos(429467295) 반환
  • 숫자 타입의 데이터를 안전하게 스트링 타입으로 변경하도록 하는 함수 to_strong
    • to_string(숫자)
  • string 타입의 문자열을 int형으로 바꾸는 함수
    • stoi(int형 숫자)
#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    vector<string> numStr={"zero", "one", "two", "three", "four", 
                   "five", "six", "seven", "eight", "nine"};
    
    for(int i=0; i<numStr.size(); i++){
        while(s.find(numStr[i])<s.size()){
            s.replace(s.find(numStr[i]), numStr[i].size(), to_string(i));
        }
    }
    answer=stoi(s);
    
    return answer;
}

 


다른 사람 풀이

  • 정규표현식을 사용
  • 대상 문자열에서 문자열을 검색해 치환하기 위해 regex_replace를 이용
    • regex_replace.(대상 문자열, regex(정규식), 치환 문자열)
#include <bits/stdc++.h>
using namespace std;

int solution(string s) {
    s = regex_replace(s, regex("zero"), "0");
    s = regex_replace(s, regex("one"), "1");
    s = regex_replace(s, regex("two"), "2");
    s = regex_replace(s, regex("three"), "3");
    s = regex_replace(s, regex("four"), "4");
    s = regex_replace(s, regex("five"), "5");
    s = regex_replace(s, regex("six"), "6");
    s = regex_replace(s, regex("seven"), "7");
    s = regex_replace(s, regex("eight"), "8");
    s = regex_replace(s, regex("nine"), "9");    
    return stoi(s);
}