반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/81301?language=cpp
문제 풀이 : 단순 구현으로 영어의 앞글자로 if else를 통해 풀었다. 다른 사람의 풀이를 보니 정규표현식으로 푼 것이 가장 간단해보였다.
if-else 코드
#include <bits/stdc++.h>
using namespace std;
int solution(string s) {
int answer = 0;
string tmp = "";
for(int i=0; i<s.size();){
if(s[i] == 'z'){
i += 4;
tmp += "0";
}
else if(s[i] == 'o'){
i += 3;
tmp += "1";
}
else if(s[i] == 't'){
if(s[i+1] == 'w'){
i += 3;
tmp += "2";
}
else{
i += 5;
tmp += "3";
}
}
else if(s[i] == 'f'){
if(s[i+1] == 'o'){
i += 4;
tmp += "4";
}
else{
i += 4;
tmp += "5";
}
}
else if(s[i] == 's'){
if(s[i+1] == 'i'){
i += 3;
tmp += "6";
}
else{
i += 5;
tmp += "7";
}
}
else if(s[i] == 'e'){
i += 5;
tmp += "8";
}
else if(s[i] == 'n'){
i += 4;
tmp += "9";
}
else if(s[i] <= '9' && s[i] >= '0'){
tmp += s[i];
i++;
}
else{
i++;
}
}
answer = stoi(tmp);
return answer;
}
정규 표현식 코드
#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);
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 위클리 챌린지 1주차, 부족한 금액 계산하기 / C++ (0) | 2021.09.07 |
---|---|
프로그래머스 - K번째 수 / C++ (0) | 2021.08.16 |
프로그래머스 - 같은 숫자는 싫어 / C++ (0) | 2021.07.21 |
프로그래머스 - 이상한 문자 만들기 / C++ (0) | 2021.07.07 |
프로그래머스 - 문자열 내 p와 y의 개수 / C++ (0) | 2021.07.07 |