https://school.programmers.co.kr/learn/courses/30/lessons/81301
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다.
s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
와 같이 중간에 문자가 포함된 문자열들을 다시 숫자들로만 구성된 문자열로 바꾸는 문제이다.
문제 설명
regex_replace 함수를 이용하여 각 문자열의 단어가 포함되어있다면 치환하면 된다.
문제의 포인트
regex헤더를 include하고 이를 사용할 줄 아는가?
코드
#include <string>
#include <vector>
#include<regex>
using namespace std;
int solution(string s) {
int answer = 0;
string sol[10] = { "zero", "one","two","three","four","five","six","seven","eight","nine" };
string st = s;
for (int i = 0; i < 10; i++)
{
string a(std::to_string(i));
st = regex_replace(st, regex(sol[i]), a);
}
answer = stoi(st);
return answer;
}
여담
한 번에 푸는데 성공했다! 중간에 c++이 아닌 c로 설정이 되어있지 않은것을 보지 못하고 오류가 났었다. 풀면서 vector 컨테이너의 함수 이용 방법을 좀 더 익혔다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 신규 아이디 추천 C++ 풀이 (0) | 2022.12.09 |
---|---|
백준 2178번 미로 탐색 C++ 풀이 (0) | 2022.12.09 |
백준 2442번 별 찍기 - 5 C++ 풀이 (0) | 2022.12.09 |
백준 2556번 별 찍기 - 14 C++ 풀이 (0) | 2022.12.09 |
백준 18405번 경쟁적 전염 C++ 풀이 (0) | 2022.12.01 |
댓글