쌓고 쌓다
[프로그래머스] 숫자 문자열과 영단어 C++ 풀이 본문
https://programmers.co.kr/learn/courses/30/lessons/81301
전체 코드
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
string number[10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
string res = "";
for (int i = 0; i < s.length(); i++)
{
if (s[i] >= '0' && s[i] <= '9') // 숫자면 그냥 추가
res += s[i];
else
{
for (int j = 0; j < 10; j++)
{
bool flag = false; // 가능한 문자열을 찾았는가?
for (int k = 0; k < number[j].length(); k++)
{
if (i + k < s.length() && s[i + k] != number[j][k])
break; // 문자가 다르기에 j번째 number은 치환 불가능
if (k == number[j].length() - 1) // k가 이렇다면 가능한 치환가능
flag = true;
}
if (flag == true) // 치환 가능하다면 res에 붙이고 길이만큼 i 증가
{
res += to_string(j);
i += number[j].length() - 1;
break;
}
}
}
}
answer = stoi(res); // res를 int로 바꾸어 answer에 저장
return answer;
}
구현 문제라 문제에서 원하는 대로 구현만 하면 풀리는 문제라 따로 설명은 작성하지 않겠습니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 C++ 풀이 (0) | 2022.06.27 |
---|---|
[프로그래머스] 키패드 누르기 C++ 풀이 (0) | 2022.06.27 |
[프로그래머스] 신규 아이디 추천 C++ 풀이 (0) | 2022.06.24 |
[프로그래머스] 로또의 최고 순위와 최저 순위 C++ 풀이 (0) | 2022.06.23 |
[프로그래머스] 신고 결과 받기 C++ 풀이 (0) | 2022.06.22 |
Comments