본문 바로가기
정리/알고리즘

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

by Hudini30 2022. 3. 24.

프로그래머스 (코딩테스트연습) - 숫자 문자열과 영단어

해당 문제는 간단히 영문 단어들과 숫자를 맵핑한 맵을 만들어 두고(한단어 + 영문으로 된 조합이 없었음) 한글자씩 뽑아두면서 숫자면 바로 답변 문자열에 넣고, 아닌경우 다음 문자를 불러와 합친 단어로 맵에서 찾는 방식으로 풀었습니다.

제한사항에 zero 또는 0으로 시작하는 경우가 없고 올바른 입력 s만 주어진다는 제한조건이 있으므로 해당 방식으로 문제를 쉽게풀었습니다.

private static final Map<String, String> wordToNumber = new HashMap<>();
    static {
        wordToNumber.put("zero", "0");
        wordToNumber.put("one", "1");
        wordToNumber.put("two", "2");
        wordToNumber.put("three", "3");
        wordToNumber.put("four", "4");
        wordToNumber.put("five", "5");
        wordToNumber.put("six", "6");
        wordToNumber.put("seven", "7");
        wordToNumber.put("eight", "8");
        wordToNumber.put("nine", "9");
    }

    public int solution(String s) {
        String temp = "";
        StringBuilder answerStr = new StringBuilder("");

        for (int i = 0; i < s.length(); i++) {
            temp += s.substring(i, i + 1);
            if (temp.matches("[0-9]")) {
                answerStr.append(temp);
                temp = "";
            } else if (wordToNumber.containsKey(temp)) {
                answerStr.append(wordToNumber.get(temp));
                temp = "";
            }
        }

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

댓글