[프로그래머스] 영단어 숫자로 바꾸기

jiyehyeon·2022년 5월 7일
0

특정 문자를 특정 숫자로 바꾸는 case

문제: https://programmers.co.kr/learn/courses/30/lessons/81301

case1( 내 코드 ) : vector<pair>혹은 map과 replace 사용

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(string s) {


  long answer = 0;
  vector<pair<string, string>> match{
      {"zero", "0"},
      {"one", "1"},
      {"two", "2"},
      {"three", "3"},
      {"four", "4"},
      {"five", "5"},
      {"six", "6"},
      {"seven", "7"},
      {"eight", "8"},
      {"nine", "9"},
  };

  for(int i=0; i<10; i++){
      while(s.find(match[i].first)!=-1){
          int idx=s.find(match[i].first);
          s.replace(idx, match[i].first.length(), match[i].second);
      }
  }

  answer=stol(s);    

  return answer;
}            

case2: string 배열 및 to_string, replace 사용

코드를 입력하세요

case3: 정규식 regex_replace 사용

#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);
}

case4: 별도의 int 변수에 문자열 탐색하며 덧셈하기

profile
https://github.com/jiyehyeon

0개의 댓글