본문 바로가기
코딩테스트

[프로그래머스]Level - 1 숫자 문자열과 영단어

by 피자보다 치킨 2022. 2. 25.

https://programmers.co.kr/learn/courses/30/lessons/81301?language=java 

 

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

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

programmers.co.kr

class Solution {
    public int solution(String s) {
        String answer = "";
        String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        String[] num2 = {"0","1","2","3","4","5","6","7","8","9"};
        for (int i =0; i <10; i++) {

            if (s.indexOf(num[i]) != -1) {
                answer += num2[i];
            }
            if (s.indexOf(num2[i]) != -1) {
                answer += num2[i];
            }
        }
        return Integer.parseInt(answer);
    }
}

 

무엇이 문제일까?

 

효율적이지 않는 if문이 문제였던 것 같다.

최근 계속 코딩테스트를 하면서 썼던 방법인 정규표현식 사용이 생각이 났다.

 

class Solution {
    public int solution(String s) {
        String[] num = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        String[] num2 = {"0","1","2","3","4","5","6","7","8","9"};
        for (int i =0; i <10; i++) {
            s = s.replaceAll(num[i],num2[i]);
        }
        return Integer.parseInt(s);
    }
}

 

 

[다른 사람 참고]

이런 식으로 num2의 String배열을 만들지 않고 하는 방법이 있었다.

그 외에도 다른 사람들의 코드를 보면서 다양한 방식들을 공부할 수 있었다.

댓글