티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

풀이법:

1) HashMap 사용

 

코드:

import java.util.*;

class Solution {
	public static int solution(String s) {
		
		HashMap<String, Integer> nums = new HashMap();
		nums.put("zero", 0);
		nums.put("one", 1);
		nums.put("two", 2);
		nums.put("three", 3);
		nums.put("four", 4);
		nums.put("five", 5);
		nums.put("six", 6);
		nums.put("seven", 7);
		nums.put("eight", 8);
		nums.put("nine", 9);
		
		int len = s.length();
		StringBuilder answer = new StringBuilder();
		StringBuilder sb = new StringBuilder();
		
		for(int i = 0 ; i < len; i++) {
			char c = s.charAt(i);
			
			if(Character.isDigit(c)) {
				answer.append(c);
			}else {
				sb.append(c);
				if(nums.containsKey(sb.toString())) {
					String num = String.valueOf(nums.get(sb.toString()));
					answer.append(num);
					sb = new StringBuilder();
				}
			}
		}
		return Integer.parseInt(answer.toString());
	}
}