달리는 두딘

[입문] 영어가 싫어요 본문

코딩 테스트/프로그래머스

[입문] 영어가 싫어요

디두딘 2022. 10. 21. 14:47

 

문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


제한사항
  • numbers는 소문자로만 구성되어 있습니다.
  • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
  • 1 ≤ numbers의 길이 ≤ 50
  • "zero"는 numbers의 맨 앞에 올 수 없습니다.

입출력 예
numbers result
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067

입출력 예 설명

입출력 예 #1

  • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

입출력 예 #1

  • "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.

내 코드 풀이

import java.util.Map.Entry;
import java.util.*;

class Solution {
    public long solution(String numbers) {
        String[] numArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        Map<String, String> map = new HashMap<>();

        for (int i = 0; i < numArr.length; i++) {
            map.put(numArr[i], Integer.toString(i));
        }

        for (Entry<String, String> entrySet : map.entrySet()) {
            if (numbers.contains(entrySet.getKey())) {
                numbers = numbers.replaceAll(entrySet.getKey(), entrySet.getValue());
            }
        }

        return Long.parseLong(numbers);
    }
}

느낀 점

이게 맞나 싶다