본문 바로가기
알고리즘/프로그래머스

(프로그래머스/자바) 힌트문제1 02. 문자열 - 프로그래머스 : 숫자 문자열과 영단어

by son_i 2023. 7. 18.
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {
    public static int solution(String s) {
        int answer = 0;

            if(s.contains("zero")){
                s = s.replace("zero","0");
            }if(s.contains("one")){
                s = s.replace("one","1");
            }if(s.contains("two")){
                s = s.replace("two","2");
            }if(s.contains("three")){
                s = s.replace("three","3");
            }if(s.contains("four")){
                s = s.replace("four","4");
            }if(s.contains("five")){
                s = s.replace("five","5");
            }if(s.contains("six")){
                s = s.replace("six","6");
            }if(s.contains("seven")){
                s = s.replace("seven","7");
            }if(s.contains("eight")){
                s = s.replace("eight","8");
            }if(s.contains("nine")){
                s = s.replace("nine","9");
            }
        return Integer.parseInt(s);
    }
}

딱히 방법이 생각나지 않아서 그냥 if문으로 노가다 했는데 정말 좋은 코드 발견 .. !

 

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

감탄이 나온다

 

replaceAll은 한 번도 안 써봤는데

replaceAll(정규식 또는 기존문자, 대체문자) 형태로 사용.

문자열에서 특정 문자를 다른자로 전체 치환하는 메소드

 

너무 효율적이다 .....

 

ex)

str = str.replaceAll("[0-9]", "A");

// [0-9] 는 정규식으로 숫자만 치환할 것을 의미