본문 바로가기

Algorithm/Programmers

[2021 카카오 채용연계형 인턴십][문자열 처리] 숫자 문자열과 영단어 - Java

문제 바로가기

 

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

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

programmers.co.kr

 

아주 오랜만입니다. PS 꾸준히 하자고 약속했었는데.. 쉽지가 않습니다. 세상은 넓고 재밌는건 너무 많습니다.

사실 삼성 상반기 문제 풀려고 했는데 표준 입력 받는 것도 생각안나길래 걍 접었습니다.

 

이번에 올해 상반기 카카오 인턴십 문제가 나왔다고 해서 한 번 풀어보려고 합니다. 호호

근데 첫 문제는 너무 쉽네요;;

 

class Solution {
    public int solution(String s) {
        String[] arry = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        for(int i = 0; i < arry.length; i++) {
            s = s.replaceAll(arry[i], String.valueOf(i));
        }
        
        return Integer.parseInt(s);
    }
}

 

사실 맨처음에는 이렇게 안풀었습니다. s의 길이만큼 돌면서 숫자면 StringBuilder에 바로 추가하고 아니면 무슨 알파벳으로 시작하는지 체크해서 StringBuilder에 추가하는 식으로 말도 안되게 어렵게 짰었는데 ㅎㅎ;; 역시 PS는 감이 중요한 것 같습니다.

 

String 클래스의 replaceAll() 메서드는 다음과 같이 선언되어 있네요.

    public String replaceAll(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }

아주 잘 만들어놨습니다. 우린 이걸 잘 쓰기만 하면 됩니다. 내부적으로 어떻게 동작하는지는 잘 안나오네요ㅜ

 

앞으로 심심할때마다 한 문제씩 풀어야겠습니다~~

심심할 일이 별로 없겠지만~~ㅎ