코딩테스트

[프로그래머스] 숫자 문자열과 영단어 자바 문자비교

mhui123 2025. 4. 4. 13:19
반응형

문제

주어진 문자열 s는 숫자 혹은 숫자 + 영단어로 이루어져있다.

해당 문자열을 해석하여 의미하는 숫자를 반환하시오.

접근

단어를 숫자와 매칭시킬 배열 numbers를 생성해 각 항목에 인덱스의 영어단어를 담고

s를 반복문 처리하여 글자를 비교한다.

해당 글자가 숫자면 num에 바로 추가하고 알파벳이면 spell에 저장하고 다음 값으로 넘긴다.

만약 spell이 numbers에 존재하는 값이면 해당 인덱스를 num 에 추가하고 spell을 초기화한다.

 

이 과정을 마친 결과값을 Integer로 변환하여 반환한다.

public int solution(String s) {
        StringBuilder num = new StringBuilder();
        String spell = "";
        String[] numbers = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            // 'a' : 97 ~ 'z' : 122
            // '0' : 48 ~ '9' : 57
            if('0' <= c && c <= '9'){
                num.append(c);
            } else {
                spell += c;
                if(spell.length() >= 3){
                    for(int j = 0; j < numbers.length; j++){
                        if(spell.equals(numbers[j])){
                            num.append(j);
                            spell = "";
                        }
                    }
                }

            }
        }

        return Integer.parseInt(String.valueOf(num));
    }
반응형