[알고리즘] 프로그래머스 - 숫자 문자열과 영단어

🌈 M1naWorld ·2022년 11월 21일
0
post-thumbnail

문제 설명

>> 더욱 자세한 문제 설명



문제 풀이

기존 내 코드

public static int solution(String s) {

        char[] charArr = s.toCharArray();

        String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

        String findWord = "";
        String result = "";

        for (int i=0; i < s.length(); i++) {

            char currentChar = Character.valueOf(charArr[i]);

            // char에서 소문자는 97부터
            if(currentChar > 96){
                findWord += String.valueOf(currentChar);
            }else{
                result += currentChar;
            }

            for(int j=0; j < arr.length; j ++){
                if(arr[j].equals(findWord)){
                    result += j;
                    findWord = "";   // 일치하는 문자 있을 경우 초기화
                }
            }
        }

        return Integer.parseInt(result);

}


알고리즘 스터디 팀원분의 코드

  • replaceAll() 사용
class Solution {
       public static int solution(String s) {

        int answer = 0;
        String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

        for(int i=0; i < 10; i++){
            s = s.replaceAll(words[i], String.valueOf(i));
        }
       
        answer = Integer.parseInt(s);

        return answer;
    }
}

  • replace() 사용
class Solution {
       public static int solution(String s) {

        int answer = 0;
        String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

        for(int i=0; i < 10; i++){
            s = s.replace(words[i], String.valueOf(i));
        }
        
        answer = Integer.parseInt(s);

        return answer;
    }
}


느낀점

함수를 사용할 생각을 하지 못해.. 순수 for문으로 푸느라 두시간 잡아먹었다. 코드 또한 직관적이지 못하고 효율성 측면에서도 훨씬 느리긴 하지만 풀었다는 것에 뿌듯했던 문제였다! 👏🏻

위의 문제를 통해 String 문자열 치환시 replace(), replaceAll()를 사용한다는 것을 알게 되었고, replace()와 replaceAll()의 속도차이를 보고 두 함수의 차이를 알아보는 계기가 되었다. 또한 두 함수의 차이를 인지하고 사용해야 할 상황을 잘 구분하여 적절하게 사용해야겠다.


>>> Java replace() vs replaeAll() 함수 차이 보러가기

profile
개발자로 사는 내 삶은 즐거워 👾

0개의 댓글