https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
2021 카카오 채용연계형 인턴십에 나온 문제입니다.
주어진 문자열에 숫자와 영단어로 표현된 숫자가 섞여 있을 때, 이를 모두 숫자로 변환해주세요.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
풀이 방법
영단어를 미리 벡터에 저장한 뒤, 문자열에서 영단어를 찾아 숫자로 치환하는 방식으로 해결했습니다.
영단어가 발견되면 해당 위치를 숫자로 변경하며 문자열을 반복적으로 수정했습니다.
풀이 코드
#include <string>
#include <vector>
using namespace std;
vector<string> string_num= {"zero","one","two","three","four","five","six","seven","eight","nine"};
string tmp;
int solution(string s) {
int answer = 0;
for(int i=0; i<string_num.size(); i++){
while(s.find(string_num[i]) != string::npos){
s.replace(s.find(string_num[i]),string_num[i].size(),to_string(i));
}
}
answer = stoi(s);
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] Lv.2 가장 큰 수 c++ (0) | 2025.01.19 |
---|---|
[프로그래머스] Lv.2 프로세스 c++ (0) | 2025.01.18 |
[프로그래머스] Lv.1 키패드 누르기 c++ (0) | 2025.01.17 |
[프로그래머스] Lv.1 신규 아이디 추천 c++ (0) | 2025.01.17 |
[프로그래머스] Lv.1 K번째수 c++ (0) | 2025.01.17 |