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

eunsil·2024년 8월 13일
0

유형: 문자열
프로그래머스 - 숫자 문자열과 영단어

문제

주어지는 문자열에서 영단어를 숫자로 변경하는 문제이다.



풀이

HashMap에 영단어를 차례대로 저장하고, 문자열의 문자를 하나씩 순회하며 답을 만들어갔다.

  1. 문자가 숫자인지 확인 Character.isDigit(s.charAt(i))
  2. temp에 문자 저장
  3. HashMap에 temp가 있는지 확인


나의 코드

import java.util.*;

class Solution {
    public int solution(String s) {
        String[] alphabet = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < 10; i++) {
            map.put(alphabet[i], i);
        }

        StringBuilder temp = new StringBuilder();
        StringBuilder answer = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) { // 숫자
                answer.append(s.charAt(i));
            } else {
                temp.append(s.charAt(i));

                if (map.containsKey(temp.toString())) { // 영어
                    answer.append(map.get(temp.toString()));
                    temp.setLength(0);
                }
            }
        }

        return Integer.parseInt(answer.toString());
    }
}


다른 사람의 코드

나는 왜 replaceAll 을 생각해내지 못했을까...!!
이토록 짧고 쉽고 간단한 방법이 있었다니... 이렇게 또 하나 배운다

class Solution {
    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);
    }
}

0개의 댓글