문제
풀이
#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://blockdmask.tistory.com/333
'Algorithm > 카카오기출' 카테고리의 다른 글
[프로그래머스]비밀지도 (0) | 2022.01.15 |
---|---|
[프로그래머스] 실패율 (0) | 2022.01.14 |
[프로그래머스]크레인 인형뽑기 게임 (0) | 2022.01.12 |
[프로그래머스] 키패드 누르기 (0) | 2022.01.11 |
[프로그래머스]신규 아이디 추천 (0) | 2022.01.05 |