프로그래머스 - 숫자 문자열과 영단어 - Java

chaemin·2024년 4월 8일
0

프로그래머스

목록 보기
11/64

1. 문제

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

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

2. 풀이

  1. HashMap 사용
    map의 Key를 돌면서 문자열 s에 포함이 되어있는지 확인하고, key값을 value로 바꿔준다.
  1. 0~9까지의 String 배열에 각 영단어를 삽입하여 바꿔준다.

사실 HashMap의 방법도 있지만, 직관적으로는 2번의 풀이가 더 이해하기 쉬운 것 같다.

3-1. [HashMap] 전체코드

import java.util.*;

class Solution {
    public int solution(String s) {
        
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        
        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);
        
        for(String num : map.keySet()) {
            
            if(s.contains(num))
                s = s.replace(num, map.get(num).toString());
        }
        
        int answer = Integer.parseInt(s);
        
        return answer;
    }
}

3-2. [문자열] 전체코드

class Solution {
    public int solution(String s) {
        String words[] = {
            "zero", "one", "two", "three", "four", "five", "six",
            "seven", "eight", "nine"};
        
        for(int i = 0; i < words.length; i++){
            s = s.replace(words[i], Integer.toString(i));    
        }
        
        return Integer.parseInt(s);
        
    }
}

0개의 댓글