문자열에서 영문 숫자 변환하기

2024. 12. 31. 12:52·공부/Code Cata

 

*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
'공부/Code Cata' 카테고리의 다른 글
  • 대칭되는 문자열 만들기
  • 람다 함수로 사용자 설정 정의해 정렬하기
  • 시저 암호(알파벳 순환 이동)
  • 최소 직사각형 구하기
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (207) N
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (148) N
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (13) N
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    문자열에서 영문 숫자 변환하기
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.