[Java] programmers-"숫자 문자열과 영단어"

김빛나리·2021년 12월 24일

문제 설명

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

숫자영단어
0zero
1one
2two
3three
4four
5five
6six
7seven
8eight
9nine


제한사항

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.


입축력 예

sresult
"one4seveneight"1478
"23four5six7"234567
"2three45sixseven"234567
"123"123


알고리즘

  1. s의 길이만큼 for문을 돌리고, Character.isDigit() 함수를 통해 해당 문자가 숫자라면 answer_str에 추가한다.
  2. 아니라면 word_str에 추가하고, word_str이 equal되는 문자가 생길 때마다 answer_str에 추가하고 word_str은 빈 문자열로 만들어준다.
  3. for문을 다 돌고 answer_str을 Integer.parseInt() 함수를 이용해 int형으로 바꾸어주면 된다.


내 소스 코드

class Solution {
    public int solution(String s) {
        int answer = 0;
        String word_str = "";
        String answer_str = "";
        
        for(int i=0;i<s.length();i++) {
            char word = s.charAt(i);
            
            // 숫자라면
            if(Character.isDigit(word)) {
                answer_str += word;
                continue;
            }
            
            // 아니면
            word_str += word;
            
            if(word_str.equals("zero")) {
                answer_str += "0"; 
                word_str = "";
            }
            else if(word_str.equals("one")) {
                answer_str += "1";
                word_str = "";
            }
            else if(word_str.equals("two")) {
                answer_str += "2";
                word_str = "";
            }
            else if(word_str.equals("three")) {
                answer_str += "3";
                word_str = "";
            }
            else if(word_str.equals("four")) {
                answer_str += "4";
                word_str = "";
            }
            else if(word_str.equals("five")) {
                answer_str += "5";
                word_str = "";
            }
            else if(word_str.equals("six")) {
                answer_str += "6";
                word_str = "";
            }
            else if(word_str.equals("seven")) {
                answer_str += "7";
                word_str = "";
            }
            else if(word_str.equals("eight")) {
                answer_str += "8";
                word_str = "";
            }
            else if(word_str.equals("nine")) {
                answer_str += "9";
                word_str = "";
            }
        }
        
        answer = Integer.parseInt(answer_str);
        
        return answer;
    }
}

0개의 댓글