어흥

[프로그래머스] 숫자 문자열과 영단어 (C++) 본문

알고리즘/프로그래머스

[프로그래머스] 숫자 문자열과 영단어 (C++)

라이언납시오 2021. 7. 16. 18:22
728x90
반응형

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

1. 주의할 점

- 딱히 없다...

 

2. 구현

- 여러 가지 방법이 존재한다. Map을 통해 저장&비교, Substring 그리고 나와 같은 풀이

- 만약 C가 숫자라면 Str에 붙이고, 영어라면 0~9까지 앞글자를 비교하여 해당 숫자를 찾은 후, i의 값을 변경시킨다. 이때, 첫 글자가 같은 숫자가 있으므로 이 경우에는 2번째 글자까지 비교한다

- stoi를 통해 Str을 정수로 치환하고 answer에 할당한 후, 반환한다

#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;

int solution(string s) {
    string str="";
    for(int i=0;i<s.size();i++){
        char c = s[i];
        if('a'<=c && c<='z'){       //문자
            if(c=='z'){     //zero
                str+='0';
                i+=3;
            }
            else if(c=='o'){     //one
                str+='1';
                i+=2;
            }
            else if(c=='t'){        //two,three
                if(s[i+1]=='w'){
                    str+='2';
                    i+=2;
                }
                else{
                    str+='3';
                    i+=4;
                }
            }
            else if(c=='f'){        //four,five
                if(s[i+1]=='o') str+='4';
                else    str+='5';
                i+=3;
            }
            else if(c=='s'){        //six,seven
                if(s[i+1]=='i'){
                    str+='6';
                    i+=2;
                }
                else{
                    str+='7';
                    i+=4;
                }
            }
            else if(c=='e'){        //eight
                str+='8';
                i+=4;
            }
            else{       //nine
                str+='9';
                i+=3;
            }
        }
        else        //숫자
            str+=c;
    }
    int answer = stoi(str);
    return answer;
}
728x90
반응형
Comments