알고리즘

프로그래머스 숫자 문자열과 영단어(JAVA)

박카스마시며코딩 2022. 3. 5. 20:33

https://programmers.co.kr/learn/courses/30/lessons/81301

 

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

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

programmers.co.kr

 

저는 substring을 통해 해당 문제를 해결하였습니다.

for문마다 매번 10을 곱해 각자리 수를 구분하였습니다.

문자가 숫자라면 더해주고, 문자라면 substring을 통해 문자를 숫자의 문자열과 비교해 같은 것의 인덱스를 더해주었습니다.

 

import java.util.*;
class Solution {
    /*
    zero , one , two , three , four , five , six , seven , eight , night
    */
    private static String[] numberToString = {
        "zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"
    };
    private static int cal(String s){
        int result = 0;
        for(int i = 0 ; i < s.length() ;i++){
            // System.out.println(i);
            char now = s.charAt(i);
            result *= 10;
            if(now >= '0' && now <= '9'){
                result += now-'0';
                continue;
            }
            for(int j = 0 ; j < 10; j++){
                int length = numberToString[j].length();
                if(i + length <= s.length()){
                    String str = s.substring(i, i+length);
                    if(str.equals(numberToString[j])){
                        result += j;
                        i += (length - 1);
                        break;
                    }
                }
            }
        }
        return result;
    }
    public int solution(String s) {
        int answer = cal(s);
        return answer;
    }
}