😈 알고리즘/🖥️ 프로그래머스

🖥️ 영어가 싫어요

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>