본문 바로가기

Algorithm/카카오기출

[프로그래머스]숫자 문자열과 영단어

문제

 

 

풀이

#include <string>
#include <vector>
using namespace std;

int solution(string s) {
    int answer = 0;
    string arr[] = {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; 
    int len = sizeof(arr)/sizeof(arr[0]);
    int i=0; 
    while(i<len){
       if(s.find(arr[i])!= string::npos)
            s = s.replace(s.find(arr[i]), arr[i].length(),to_string(i));
        else i++;
    }
    return stoi(s);
}

 

해결방법

1. 문자열 배열 생성

2. find함수 사용해 영단어를 찾고, replace를 사용해 숫자로 대체

3. stoi를 사용해 문자열을 숫자로 변환

 

 

 


 

다른 사람 풀이

#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는 처음 들어보는데 정말 유용해 보이니까 공부해두어야겠다!

https://modoocode.com/303

 

씹어먹는 C++ - <17 - 2. C++ 정규 표현식(<regex>) 라이브러리 소개>

 

modoocode.com

 

 

 


https://blockdmask.tistory.com/333

 

[C++] stoi, stof, stol, stod 함수에 대해서 (string to int)

안녕하세요. BlockDMask 입니다. 지난시간에는 C/C++에 기존에 존재하던 atoi, atof, atol등 char* 타입의 문자열을 정수로, 실수로 (=숫자로) 변경하는 함수에 대해서 살펴 보았습니다. 오늘은! C++11에서 부

blockdmask.tistory.com