[프로그래머스] Level0. 영어가 싫어요

Benjamin·2023년 2월 6일
0

프로그래머스

목록 보기
10/58

내 풀이

class Solution {
    public long solution(String numbers) {
        long answer = 0;
        String num = "";
        int i =0;
        while(i<numbers.length()) {
            char alpha = numbers.charAt(i);
            switch(alpha) {
                case 'o' : num += 1;
                    i += 3;
                    break;
                case 'z' : num += 0;
                    i += 4;
                    break;
                case 't' : if(numbers.charAt(i+1) == 'w') {
                        num += 2;
                        i += 3;
                    } else {
                        num += 3;
                        i+= 5;
                    }
                    break;
                case 'f' : if(numbers.charAt(i+1) == 'o') {
                        num += 4;
                    } else {
                        num += 5;
                    }
                    i += 4;
                    break;
                case 's' : if(numbers.charAt(i+1) == 'i') {
                        num += 6;
                        i += 3;
                    } else {
                        num += 7;
                        i += 5;
                    }
                    break;
                case 'e' : num += 8;
                    i += 5;
                    break;
                case 'n' : num += 9;
                    i+= 4;
                    break;
            }
        }
        answer = Long.parseLong(num);
        return answer;
    }
}

너무 길고, 지저분하다.. 다른 풀이를 보고 배우자

다른 풀이 둘 다 replaceAll()을 사용했다!
뭔가 특정 원소 삭제, 대체.. 같은경우 replace를 생각하자!!!

다른 풀이 1

class Solution {
    public long solution(String numbers) {

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

            for (int i = 0; i < numbers_arr.length; i++) {
                numbers = numbers.replaceAll(numbers_arr[i], String.valueOf(i));
            }

            long answer = Long.parseLong(numbers);
            return answer;
        }
}

다른 풀이 2

class Solution {
    public long solution(String numbers) {
        return Long.parseLong(
                numbers.replaceAll("zero", "0")
                        .replaceAll("one", "1")
                        .replaceAll("two", "2")
                        .replaceAll("three", "3")
                        .replaceAll("four", "4")
                        .replaceAll("five", "5")
                        .replaceAll("six", "6")
                        .replaceAll("seven", "7")
                        .replaceAll("eight", "8")
                        .replaceAll("nine", "9")
        );
    }
}

0개의 댓글