영운's 블로그

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

백준 , 프로그래머스 풀이/프로그래머스 Lv1 (Java)

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

오영운(you88) 2022. 3. 29. 16:34

목차

    실제 문제: 코딩 테스트 연습 - 숫자 문자열과 영단어 | 프로그래머스 (programmers.co.kr)

     

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

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

    programmers.co.kr

     

    영어와 숫자 혼합으로 이루어진 문자열을 정수로 변환하는 문제이다.

     

    영어 -> 숫자 변환이기에 enum을 활용하면 편할 것 같았다.

    보통 enum은 ZERO, ONE, TWO..처럼 대문자를 활용하지만 input으로 주어지는 영어가 소문자로 제한되어 있어 소문자로 enum을 선언하였다.

     

    풀며 알게된 점

    1) enum의 values() 메서드를 사용하면 for반복문을 활용할 수 있다.

     

        enum의 values() 메서드는 enum의 원소들을 반환한다.

     

    2) String의 replaceAll()메서드는 문자열 자체를 바꾸지 않고 바뀐 문자열을 반환한다.

    따라서 문자열을 바꾸고 싶으면 기존 변수에 다시 선언해 줘야한다.

     

     

    public class Solution {
        enum Number{
            zero, one, two, three, four, five, six, seven, eight, nine
        }
        
        public int solution(String s) {
    
            for(Number i : Number.values())
                s = s.replaceAll(i.name(), String.valueOf(i.ordinal()));
            
            int answer = Integer.parseInt(s);
            return answer;
        }
    
        public static void main(String[] args) {
            String test1 = "one4seveneight";
            String test2 = "23four5six7";
            String test3 = "2three45sixseven";
            String test4 = "123";
    
            Solution sl = new Solution();
    
            System.out.println(sl.solution(test1));
            System.out.println(sl.solution(test2));
            System.out.println(sl.solution(test3));
            System.out.println(sl.solution(test4));
    
        }
    }

    결과값

     

    Comments