문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
숫자영단어
0 | zero |
1 | one |
2 | two |
3 | three |
4 | four |
5 | five |
6 | six |
7 | seven |
8 | eight |
9 | nine |
제한사항
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
입출력 예
"one4seveneight" | 1478 |
"23four5six7" | 234567 |
"2three45sixseven" | 234567 |
"123" | 123 |
코드
int solution(string s) {
int answer = 0;
string dump = "";
int size = s.size();
for (int i = 0; i < size; i++)
{
if (s[i] >= '0' && s[i] <= '9') dump.push_back(s[i]);
if (s.find("zero", i) == i) dump.push_back('0');
if (s.find("one", i) == i) dump.push_back('1');
if (s.find("two", i) == i) dump.push_back('2');
if (s.find("three", i) == i) dump.push_back('3');
if (s.find("four", i) == i) dump.push_back('4');
if (s.find("five", i) == i) dump.push_back('5');
if (s.find("six", i) == i) dump.push_back('6');
if (s.find("seven", i) == i) dump.push_back('7');
if (s.find("eight", i) == i) dump.push_back('8');
if (s.find("nine", i) == i) dump.push_back('9');
}
answer = stoi(dump);
return answer;
}
str1.find(....)
함수 원형 : size_t find (const string& str, size_t index = 0) const;
함수 원형 : size_t find (const char* arr, size_t index = 0) const;
함수 설명 : 매개변수로 들어온 문자열과, 내 문자열중에 일치하는 게 있는지 확인하는 함수입니다.
만약에 일치하는게 있다면, 일치하는 부분의 첫번째 순서(index)를 반환합니다.
두번째 매개변수로 들어온 index는 어느 위치에서 부터 찾을까 입니다.
함수 예시 : str2.find("Blog"); // "BlogBlogBlogBlog" -> 0 을 반환합니다.
함수 예시 : str2.find("Blog", 5); // 5번째 인자부터 blog를 찾게되니 BlogBlogBlogBlog 빨간색 l에서부터 찾게되므로 그 다음에 나오는 B의 위치인 8을 반환할 것 입니다.
출처: https://blockdmask.tistory.com/338 [개발자 지망생]
'문제풀이(C++) > 프로그래머스[Level2]' 카테고리의 다른 글
[프로그래머스 Level2][C++] 행렬의 곱셈 (0) | 2022.01.06 |
---|---|
[프로그래머스 Level2][C++] N개의 최소공배수 (0) | 2021.11.26 |
[프로그래머스 Level2][C++] 최솟값 만들기 (0) | 2021.11.04 |
[프로그래머스 Level2][C++] 올바른 괄호 (0) | 2021.11.03 |
[프로그래머스 Level2][C++] 피보나치 수 (0) | 2021.10.29 |