250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++ KAKAO)숫자 문자열과 영단어 본문
728x90
반응형
https://programmers.co.kr/learn/challenges
주어진 문자열에서 숫자가 영단어로 이뤄진 경우 숫자로 바꿔 리턴하면 된다.
for문을 통해 s의 문자를 확인한다.
zero, one, eight, nine 처럼 영단어의 시작이 다른 숫자와 겹치지 않기 때문에 해당하는 숫자(문자열로 저장)를 answer에 저장한다.
그리고 단어의 길이 - 1을 i에 더해 다음 문자를 읽도록 한다.
만약 two, three, four, five와 같이 중복되는 경우 substr()함수를 이용해 한번 더 검사하여 해당하는 숫자를 저장한다.
마찬가지로 i에 단어의 길이 - 1을 더한다.
리턴값은 int형이기 때문에 stoi()로 string -> int로 변환하여 리턴한다.
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
string answer = "";
for(int i = 0; i < s.size(); i++){
if(s[i] >= '0' && s[i] <= '9'){
answer += s[i];
}
else{
if(s[i] == 'z'){
answer += '0';
i += 3;
}
else if(s[i] == 'o'){
answer += '1';
i += 2;
}
else if(s[i] == 't'){
if(s.substr(i, 3) == "two"){
answer += '2';
i += 2;
}
else{
answer += '3';
i += 4;
}
}
else if(s[i] == 'f'){
if(s.substr(i, 4) == "four"){
answer += '4';
}
else{
answer += '5';
}
i += 3;
}
else if(s[i] == 's'){
if(s.substr(i, 3) == "six"){
answer += '6';
i += 2;
}
else{
answer += '7';
i += 4;
}
}
else if(s[i] == 'e'){
answer += '8';
i += 4;
}
else if(s[i] == 'n'){
answer += '9';
i += 3;
}
}
}
return stoi(answer);
}
728x90
반응형
'프로그래머스 알고리즘 > KAKAO' 카테고리의 다른 글
(프로그래머스 KAKAO c++)순위 검색 (0) | 2021.09.27 |
---|---|
(프로그래머스 c++ KAKAO)거리두기 확인하기 (0) | 2021.07.09 |
(프로그래머스 JS KAKAO)괄호 변환하기 (0) | 2021.05.13 |
(프로그래머스 JS KAKAO)튜플 (0) | 2021.05.13 |
(프로그래머스 JS KAKAO)뉴스 클러스터링 (0) | 2021.05.12 |