2021 카카오 채용연계형 인턴십
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/81301
C++ 풀이
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
//각 숫자 영단어의 앞 두글자와 글자수를 저장함
vector <pair<string, int> > num_word = {
{"ze", 4}, {"on", 3}, {"tw", 3}, {"th", 5}, {"fo", 4},
{"fi", 4}, {"si", 3}, {"se", 5}, {"ei", 5}, {"ni", 4}};
for (int i = 0; i < s.length(); i++) {
//숫자인 경우
if (isdigit(s[i])) {
answer = (answer * 10) + (s[i] - 48);
}
//영단어인 경우
else {
for (int j = 0; j < 10; j++) {
if (s.substr(i, 2) == num_word[j].first) {
answer = (answer * 10) + j;
i += num_word[j].second - 1;
break;
}
}
}
}
return answer;
}
다른 사람들의 풀이를 구경해보니 regex_replace() 함수를 사용하여 문자열을 치환할 수 있음을 알게 되었다.
오늘도 이렇게 배운다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 표 편집 (0) | 2021.08.25 |
---|---|
[프로그래머스] 2개 이하로 다른 비트 (0) | 2021.08.17 |
[SWEA 7854] 최약수 (0) | 2021.07.21 |
[프로그래머스] 거리두기 확인하기 (0) | 2021.07.15 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2021.05.31 |