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

chorok ☘️·2025년 7월 2일
0

코딩테스트

목록 보기
27/54
post-thumbnail

코딩테스트 연습 > 코딩테스트 입문 > 영어가 싫어요

⚡ 문제 설명

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

⚡ 제한사항

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

⚡ 입출력 예

numbersresult
"onetwothreefourfivesixseveneightnine"123456789
"onefourzerosixseven"14067

⚡ 구현코드

나의 문제 풀이

import java.util.HashMap;

class Solution {
    public long solution(String numbers) {        
        HashMap<String, Integer> num = new HashMap<>();
        String[] numbersStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        int[] numbersInt = {0,1,2,3,4,5,6,7,8,9};
        for(int i=0; i<numbersInt.length; i++){
            num.put(numbersStr[i], numbersInt[i]);
        }
        
        String txt = "";
        String ans = "";
        for(int i=0; i<numbers.length(); i++){
             txt += numbers.charAt(i);
            if(num.containsKey(txt)){
                ans += num.get(txt);
                txt = "";
            } 
        }
        
        long answer = Long.valueOf(ans);
        
        return answer;
    }
}

다른 사람의 문제 풀이

class Solution {
    public long solution(String numbers) {        
        String[] numbersStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

            for (int i = 0; i < numbersStr.length; i++) {
                numbers = numbers.replaceAll(numbersStr[i], String.valueOf(i));
            }
        
        long answer = Long.valueOf(numbers);
        
        return answer;
    }
}

⚡ 구현코드 해설

나의 코드

HashMap을 사용해서 문자-수 조합으로 만들었다.
반복문을 사용해서 numbers문자열의 글자를 하나씩 txt에 더해주었다. 그리고 조건문으로 txt가 HashMap 키에 있으면 그걸 수로 바꾸고 다시 txt는 초기화하도록 했다.
그리고 마지막으로 문자를 long 타입으로 바꾸어주었다.
long 타입 ans로 하면 조건문에서 +=을 이어붙이기가 아니라 plus 해버리기 때문에.. String 타입으로 ans을 만들었다.

다른 사람의 코드

replaceAll을 통해 문자열 전체에서 해당 단어를 숫자 문자열로 바꾼다.

🍏 회고 및 느낀점

replaceAll이 있다..는 걸 기억하도록 ㅜㅜ !!

profile
백엔드 개발자 chorok's velog

0개의 댓글