1. 문제 풀이
해쉬를 사용하여 풀이하였습니다. 매개변수로 주어진 s를 for(c : s)로 순차탐색하면서 c가 숫자문자이면 ans에 삽입, 아니라면 number에 삽입하면서 진행했습니다. 여기서 number가 해쉬에 key로 mapping되어있다면, key로 value를 찾아 ans에 삽입하고 number는 빈 문자열로 갱신했습니다.
위 구현의 시간복잡도는 : O(|s|)입니다.
2. 코드
#include <bits/stdc++.h>
using namespace std;
unordered_map<string, char> convert = {
{"zero", '0'}, {"one", '1'},
{"two", '2'}, {"three", '3'},
{"four", '4'}, {"five", '5'},
{"six", '6'}, {"seven", '7'},
{"eight", '8'}, {"nine", '9'}
};
int solution(string s) {
string ans{}, number{};
for(char c : s){
if(isdigit(c)){
ans.push_back(c);
continue;
}
number.push_back(c);
if(convert.find(number) == convert.end()) continue;
ans.push_back(convert[number]);
number = "";
}
return stoi(ans);
}
3. 제출 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Level3 단속카메라[C++] (0) | 2025.01.04 |
---|---|
프로그래머스 Level3: 숫자게임[C++] (0) | 2025.01.03 |
프로그래머스 Level 3: 단어 변환[C++] (0) | 2025.01.01 |
프로그래머스 Level 3: 야근 지수 (0) | 2024.12.04 |
프로그래머스 Level 1: [1차] 비밀지도 (0) | 2024.10.14 |