😈 알고리즘/🖥️ 프로그래머스
🖥️ 영어가 싫어요
Buᐢ༝ᐢy
2023. 2. 2. 06:00
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
numbers result
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
입출력 예 설명
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
제출 코드
2022년 12월 28일
#include <string>
#include <vector>
using namespace std;
long long solution(string numbers) {
long long answer = 0;
while(1)
{
if(numbers == "")
{
break;
}
if(numbers[0] == 'z')
{
answer = answer * 10 + 0;
numbers.erase(numbers.begin(),numbers.begin()+4);
}
else if(numbers[0] == 'o')
{
answer = answer * 10 + 1;
numbers.erase(numbers.begin(),numbers.begin()+3);
}
else if(numbers[0]=='t')
{
if(numbers[1]=='w')
{
answer = answer * 10 + 2;
numbers.erase(numbers.begin(),numbers.begin()+3);
}
else
{
answer = answer * 10 + 3;
numbers.erase(numbers.begin(),numbers.begin()+5);
}
}
else if(numbers[0]=='f')
{
if(numbers[1]=='o')
{
answer = answer * 10 + 4;
numbers.erase(numbers.begin(),numbers.begin()+4);
}
else
{
answer = answer * 10 + 5;
numbers.erase(numbers.begin(),numbers.begin()+4);
}
}
else if(numbers[0]=='s')
{
if(numbers[1]=='i')
{
answer = answer * 10 + 6;
numbers.erase(numbers.begin(),numbers.begin()+3);
}
else
{
answer = answer * 10 + 7;
numbers.erase(numbers.begin(),numbers.begin()+5);
}
}
else if(numbers[0]=='e')
{
answer = answer * 10 + 8;
numbers.erase(numbers.begin(),numbers.begin()+5);
}
else if(numbers[0] == 'n')
{
answer = answer*10+9;
numbers.erase(numbers.begin(),numbers.begin()+4);
}
}
return answer;
}
<aside> ☝ 코드만 봐도 알 수 있듯이 주먹구구식으로 해결했다.
</aside>