본문 바로가기
algorithm

[프로그래머스]영어가 싫어요 - java

by skysline 2023. 3. 16.
반응형

`영어가 싫어요`

문제설명

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

numbers는 소문자로만 구성되어 있습니다. numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.

입출력 예


설명

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

code

import java.util.*;
class Solution {
    public long solution(String numbers) {
        long answer = 0;
        List<Integer> numstr = new LinkedList<>();
        HashMap<String,Integer> hash = new LinkedHashMap<>(){
            {
                put("zero",0);put("one",1);put("two",2);put("three",3);put("four",4);
                put("five",5);put("six",6);put("seven",7);put("eight",8);put("nine",9);
            }
        };
        for (String item: hash.keySet()) {
            if (numbers.contains(item)){
                numbers = numbers.replace(item,Integer.toString(hash.get(item)));
            }
        }
        answer = Long.parseLong(numbers);
        return answer;
    }
}

해시맵을 사용해 각키에 값을 정해준다.

키를 반복해서 입력받는 데이터와 비교해 있다면

numbers = numbers.replace(item,Integer.toString(hash.get(item)))

입력받은 데이터의 값을 바꿔준다.

String.valueOf를 써도 무방하다. 

해시맵의 get 메서드는 해당 키에 해당하는 값을 반환한다.

마지막으로 입력받은 데이터를 형변환 해주면 된다.

결과

반응형

댓글