Deff_Dev
[프로그래머스] 숫자 문자열과 영단어 (C++) 본문
문제
풀이
이 문제는 입력된 문자열을 숫자로 변환하여 반환하는 문제이다.
char 아스키 코드 비교(48 ~ 57)를 이용해 숫자를 판별하고, 각각의 숫자 영단어에 따른 숫자 문자 반환 함수를 만들어 풀이했다.
문제를 다 푼뒤, 숫자 문자 판별할 때, isdigit를 사용하면 쉽게 판단할 수 있다는 걸 알게되었다.
#include <string>
#include <vector>
using namespace std;
char GetNum(string s){
char c;
if(s == "zero"){
c = '0';
}
else if(s == "one"){
c = '1';
}
else if(s == "two"){
c = '2';
}
else if(s == "three"){
c = '3';
}
else if(s == "four"){
c = '4';
}
else if(s == "five"){
c = '5';
}
else if(s == "six"){
c = '6';
}
else if(s == "seven"){
c = '7';
}
else if(s == "eight"){
c = '8';
}
else if(s == "nine"){
c = '9';
}
return c;
}
bool IsParsing(string s){
bool b = false ;
if(s == "zero"){
b = true;
}
else if(s == "one"){
b = true;
}
else if(s == "two"){
b = true;
}
else if(s == "three"){
b = true;
}
else if(s == "four"){
b = true;
}
else if(s == "five"){
b = true;
}
else if(s == "six"){
b = true;
}
else if(s == "seven"){
b = true;
}
else if(s == "eight"){
b = true;
}
else if(s == "nine"){
b = true;
}
return b;
}
int solution(string s) {
int answer = 0;
string str = "", sub ="";
for(int i =0; i < s.length(); i++){
char c = s[i];
sub += c;
if(c >= 48 && c <=57){
str += c;
sub = "";
}
else if(IsParsing(sub)){
str += GetNum(sub);
sub ="";
}
}
answer = stoi(str);
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 리코쳇 로봇 (C++) (0) | 2024.11.11 |
---|---|
[프로그래머스] 요격 시스템 (C++) (1) | 2024.11.07 |
[프로그래머스] 체육복 (C++) (0) | 2024.11.05 |
[프로그래머스] 완주하지 못한 선수 (C++) (0) | 2024.11.05 |
[프로그래머스] 가장 가까운 같은 글자 (C++) (0) | 2024.11.04 |