728x90
입력으로 영어와 숫자가 포함된 문자열이 들어오면 문자열을 원래 숫자로 치환하는 문제이다.
개발은 Java로 하는데 알고리즘은 C++로 푸는 것이 편해서 오랜만에 풀다보니 문법을 다 까먹었다.
처음에는 s.length() 만큼 반복하면서 알파벳을 누적하고 누적과 동시에 해당 문자열이 숫자로 치환 가능한지 체크하는 함수를 만들어 풀려고 시도 했다. 그냥 삽질했음....
std::string 의 메소드를 잘 알지 못해서 이런 이상한 짓을 하였다.
사실 Python에는 replace함수를 매우 간단히 쓸수 있어 C++은 외우지 않았다.... (std::string에 replace가 있다니... 심지어 to_string 도 내장... WOW)
풀이는 다음과 같다.
#include<iostream>
#include<string>
using namespace std;
string num[10] = { "zero","one","two" ,"three" ,"four" ,"five" ,"six" ,"seven" ,"eight" ,"nine" };
int solution(string s) {
for(size_t j = 0; j < 10; j++)
{
if(s.find(num[j]) != string::npos)
{
//replace(시작index, 구간, 치환문자)
s.replace(s.find(num[j]), num[j].length(), to_string(j));
j--;
}
}
return stoi(s);
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT (오픈채팅방) (0) | 2023.04.15 |
---|---|
2021 Dev-Matching: 웹 백엔드 개발자(상반기)(행렬 테두리 회전하기) (0) | 2022.12.24 |
2021 Dev-Matching: 웹 백엔드 개발자(상반기)(로또의 최고 순위와 최저 순위) (0) | 2022.12.24 |
2018 KAKAO BLIND RECRUITMENT (비밀지도) (0) | 2022.11.22 |
2021 카카오 채용연계형 인턴십 (거리두기 확인하기) (0) | 2022.11.22 |