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

Choi Seong Jin·2022년 11월 9일
0

문제 링크 : 숫자 문자열과 영단어

문제 설명




내 풀이

public int solution(String s) {
        int answer = 0;
        HashMap<String, Integer> map = new HashMap<>();
        map.put("zero", 0); map.put("one", 1); map.put("two", 2); map.put("three", 3); map.put("four", 4);
        map.put("five", 5); map.put("six", 6); map.put("seven", 7); map.put("eight", 8); map.put("nine", 9);
        String tempStr = "";
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){
                answer = answer * 10 + Integer.parseInt(s.substring(i, i+1));
            }else{
                tempStr += s.substring(i, i+1);
                if(map.get(tempStr) != null){
                    answer = answer * 10 + map.get(tempStr);
                    tempStr = "";
                }
            }
        }
        return answer;
    }

다른 사람들의 풀이

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);
    }

내가 문제를 풀때는 Map 자료구조에 영어 단어와 숫자를 맵핑해서 넣고, 문자열이 0~9까지면 그대로 넣고, 영어 단어라면 그 단어를 Map에서 찾아 더한 후 반환하는 형식이다.
하지만 다른 사람들은 replaceAll 함수를 사용해서 문자열값 자체를 변경한 후 그 값을 Int 값으로 변환해서 반환한다.
이 방식을 생각을 못해서 풀이를 보고 상당히 놀랐다.

profile
백엔드 개발자 지망생입니다!

0개의 댓글