

*unordered_map 사용한 초기 코드
더보기
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string ConvertStirng(const unordered_map<string, string> NumList, const string& s)
{
string Result;
string Temp;
for (char c : s)
{
// 알파벳 발견 시, 한 글자씩 unordered_map 리스트에 검색하여 Result에 저장
if (isalpha(c))
{
Temp += c;
auto it = NumList.find(Temp);
if (it != NumList.end())
{
Result += (*it).second;
Temp.clear();
}
}
// 알파벳이 아니라면 Result에 바로 저장
else
{
Result += c;
}
}
return Result;
}
int solution(string s)
{
unordered_map<string, string> NumList =
{
{"zero","0"}, {"one","1"}, {"two","2"}, {"three","3"}, {"four","4"},
{"five","5"}, {"six","6"}, {"seven","7"}, {"eight","8"}, {"nine","9"}
};
string Result = ConvertStirng(NumList, s);
return stoi(Result);
}
*regex_replace 함수 사용한 코드
#include <string>
#include <vector>
#include <regex>
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 함수를 사용해서 다시 풀어보았다.
확실히 코드 가독성면에서는 좋지만 실제로 사용은 거의 하지 않을 것 같다.
regex_replace에 대한 정리: https://dong-grae.tistory.com/84
std::regex_replace
regex_replace정규 표현식(regex)을 사용하여 문자열에서 특정 패턴을 찾아 다른 문자열로 교체하는 함수이다.C++ 표준 라이브러리의 헤더에 포함되어 있다. string regex_replace(const string& input, const regex&
dong-grae.tistory.com
'공부 > Code Cata' 카테고리의 다른 글
대칭되는 문자열 만들기 (0) | 2025.01.03 |
---|---|
람다 함수로 사용자 설정 정의해 정렬하기 (0) | 2025.01.01 |
시저 암호(알파벳 순환 이동) (0) | 2024.12.31 |
최소 직사각형 구하기 (0) | 2024.12.31 |
재귀호출로 배열의 합 검사하기 (0) | 2024.12.30 |