[프로그래머스] Java 코딩테스트 - 영어가 싫어요

yihyun·2024년 8월 12일

코딩테스트

목록 보기
16/105
post-thumbnail

영어가 싫어요

✅문제 설명

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

✅ 제한사항

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

🔽 소스코드 1

실행 시간 : 0.09ms ~ 0.15ms
replace() 를 활용해 들어온 문자열과 숫자를 교환해준다.

class Solution {
    public long solution(String numbers) {
        long answer = 0;

        numbers = numbers.replace("zero", "0");
        numbers = numbers.replace("one", "1");
        numbers = numbers.replace("two", "2");
        numbers = numbers.replace("three", "3");
        numbers = numbers.replace("four", "4");
        numbers = numbers.replace("five", "5");
        numbers = numbers.replace("six", "6");
        numbers = numbers.replace("seven", "7");
        numbers = numbers.replace("eight", "8");
        numbers = numbers.replace("nine", "9");
        
        answer = Long.parseLong(numbers);
        
        return answer;
    }
}

🔽 소스코드 2

실행 시간 : 0.10ms ~ 0.16ms

위에 코드를 보면 반복되는 코드가 보인다.
즉, for문으로 만들어서 사용이 가능하다.
※ 인덱스 0번은 'zero', 1번은 'one' 가 들어가 있다.

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

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

🔽 소스코드 3

실행시간 : 0.11ms ~ 0.18ms

Map 인터페이스를 활용한 방법

import java.util.HashMap;

class Solution {
    public long solution(String numbers) {
    	long answer = 0;
    	
    	HashMap<String, String> numberMap = getMap();
    	
    	for (String key : numberMap.keySet()) {
			System.out.println(key);
			numbers = numbers.replace(key, numberMap.get(key));
			System.out.println(numbers);
		}
    	
    	answer = Long.parseLong(numbers);
    	
    	return answer;
    }
    
    private HashMap<String, String> getMap(){
    	HashMap<String, String> map = new HashMap<String, String>();
    	
    	map.put("zero", "0");
    	map.put("one", "1");
    	map.put("two", "2");
    	map.put("three", "3");
    	map.put("four", "4");
    	map.put("five", "5");
    	map.put("six", "6");
    	map.put("seven", "7");
    	map.put("eight", "8");
    	map.put("nine", "9");
    	
    	return map;
    	
    }

}
profile
개발자가 되어보자

0개의 댓글