문제

문제 해석
- 영단어에 대응되는 숫자표 => 벡터로 인덱스에 맞는 단어를 넣어두자(numbers라고 선언)
- 이중 반복문 사용 => s의 0번 인덱스부터 반복하며 비교
- numbers의 인덱스를 to_string으로 임시 문자열에 숫자로 push_back 처리
- s의 문자가 숫자인 경우는 isdigit 함수를 이용하여 판별하고 해당 문자를 임시 문자열에 숫자로 push_back 처리
- 이중 반복문이 끝나면 임시 문자열을 숫자로 변환하여 answer에 저장
코드
#include <string>
#include <vector>
#include <cctype>
using namespace std;
int solution(string s) {
long long answer = 0;
vector<string> numbers =
{
"zero","one","two", "three", "four", "five", "six", "seven", "eight", "nine"
};
int length = s.length();
string Temp;
for(int IDX = 0; IDX < length; ++IDX)
{
if(isdigit(s[IDX]))
{
Temp += s[IDX];
continue;
}
// numbers의 0부터 비교
for(int NumIDX = 0; NumIDX < 10; ++NumIDX)
{
if(numbers[NumIDX] == s.substr(IDX, numbers[NumIDX].length()))
{
Temp += to_string(NumIDX);
}
}
}
answer = stoll(Temp);
return answer;
}
다른 사람의 풀이법
- regex를 이용한 정규 표현식으로 풀이
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
| 두 개 뽑아서 더하기 (0) | 2025.01.14 |
|---|---|
| 가장 가까운 같은 글자 (1) | 2025.01.14 |
| 최대공약수와 최소공배수 (0) | 2025.01.07 |
| 직사각형 별찍기 (0) | 2025.01.07 |
| 행렬의 덧셈 (2) | 2025.01.07 |