[프로그래머스 / C++] 영어가 싫어요

YH·2023년 7월 17일
0

문제

영어가 싫어요 : 문제 링크


문제 분석

  • 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return
  • number라는 문자열 벡터에 "zero"부터 "nine"까지 저장
  • numbers 문자열의 길이가 0이 될 때까지 작동하도록 하고, numbers 문자열에서 number 벡터에 저장한 문자를 찾으면 해당하는 숫자를 answer에 저장
  • 자릿수 설정을 위해, 문자를 찾을때마다 answer에 10을 곱한 후 찾은 값을 더해주도록 함
  • substr() 함수를 사용하여 앞서 찾은 문자열 인덱스 부터 마지막까지 잘라서 저장한 후, while loop를 반복

substr() 함수 사용법
1. str.substr(n, m);
=> index n에서 시작하는 m개의 문자를 잘라서 string으로 return
2. str.substr(n);
=> index n에서 str 문자열의 마지막까지 잘라서 string으로 return


풀이

#include <string>
#include <vector>

using namespace std;

vector<string> number = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

long long solution(string numbers) {
    long long answer = 0;
    
    while(numbers.length() != 0) {
        for(int i = 0; i < number.size(); i++) {
            if(numbers.substr(0, number[i].length()) == number[i]) {
                answer = answer * 10 + i;
                numbers = numbers.substr(number[i].length());
            }
        }
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글