https://school.programmers.co.kr/learn/courses/30/lessons/81301
이 문제는 map 자료구조를 통해 손쉽게 해결할 수 있다.
map에 영단어일 경우 일치하는 숫자를 value로 하여 저장한다.
이후 s문자열을 순회한다.
이때 현재 문자가 '0'에서 '9'에 해당하는 경우 그대로 문자열 number에 삽입한다.
아닌 경우 임시 문자열인 str에 문자를 삽입하고 map에서 현재 str에 해당하는 영단어가 있을 때 number 문자열에 value를 삽입한다.
순회가 끝나면 number 문자열에 있는 값을 정수로 변환하고 반환한다.
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string,string> m = {{"zero","0"},{"one","1"},{"two","2"},{"three","3"},{"four","4"},{"five","5"},{"six","6"},{"seven","7"},{"eight","8"},{"nine","9"}};
int solution(string s) {
int answer = 0;
string number = "";
string str = "";
for(int i = 0;i<s.length();i++){
char c = s[i];
if(c >= '0' && c <='9'){
number += c;
str = "";
}
else{
str += c;
if(m.find(str) != m.end()){
number += m[str];
str = "";
}
}
}
answer = stoi(number);
return answer;
}
'Programmers Review' 카테고리의 다른 글
[Lv 1] 콜라 문제 (0) | 2024.06.07 |
---|---|
[Lv 1] 로또의 최고 순위와 최저 순위 (0) | 2024.06.07 |
[Lv 1] 신고 결과 받기 (0) | 2024.06.07 |
[Lv 1] 성격 유형 검사하기 (0) | 2024.06.07 |
[Lv 1] 숫자 짝꿍 (0) | 2024.06.07 |