문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/81301
문제 설명
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1. 1478 → "one4seveneight"
2. 234567 → "23four5six7"
3. 10203 → "1zerotwozero3"
문제 입출력 예)
s | result |
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
문제 풀이 1/2
너무 비효율 적인 방법으로 문제를 풀었다,,
s의 글자수 길이 만큼 for문을 돌리고,
str이라는 문자열을 주고 이와 해당되는 공간을 찾아 변경을 실시하였다.
for문에 for문을 돌리기에 N^2 너무 안좋은 방법이다..
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string s) {
vector<string> str = {"zero","one","two","three","four","five","six","seven","eight","nine"};
int answer = 0;
for(auto ss:s){
for(int i=0; i<str.size(); i++){
size_t index = s.find(str[i]);
if(index <= 50){
s.replace(index, str[i].size(), to_string(i));
break;
}
}
}
answer = stoi(s);
return answer;
}
문제 풀이 2/2
다른 문제풀이를 찾아본 결과
regex라는 라이브러리가 있다는 것을 알게 되었다.
regex_replace(문자열, regex("바꿀문자"), 바뀔문자);
#include<regex>
#include<iostream>
#include<string>
using namespace std;
int main(){
string s = "hello my name is efforter";
s = regex_replace(s, regex("efforter"), "hello");
// 이전 : hello my name is efforter
// 이후 : hello my name is hello
return 0;
}
위와같이 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);
}
리뷰
regex_replace 메모,,
'알고리즘 공부 > 프로그래머스 [C++]' 카테고리의 다른 글
프로그래머스 : Summer/Winter Coding 소수 만들기 [C++] (0) | 2022.11.07 |
---|---|
프로그래머스 : 모의고사 [C++] (0) | 2022.11.04 |
프로그래머스 : [1차] 비밀지도 [C++] (0) | 2022.11.04 |
프로그래머스 : 소수 찾기 [C++] (0) | 2022.11.03 |
프로그래머스 : 문자열 내 마음대로 정렬하기 [C++] (0) | 2022.11.03 |
댓글