영운'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