나의 풀이
import java.util.*;
class Solution {
public int solution(String s) {
HashMap<String, String> map = new HashMap<String, String>();
StringBuilder sb = new StringBuilder(s);
String word = "";
String key ="";
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(int i =0; i<s.length(); i++){
key += s.substring(i,i+1);
if(map.containsKey(key)) {
word+=map.get(key);
key="";
}for(String k : map.keySet()){
if(map.get(k).equals(key)) {
word+=map.get(k);
key="";
}
}
}
Integer answer = Integer.valueOf(word);
return answer;
}
}
접근 방식
hashmap
을 이용하여 key,value로 자릿수(key)에 대한 숫자(value) 저장
- string으로 저장 후 정수로 변환(Integer.valueOf 또는 Integer.parseInt() 사용)
다른 사람의 풀이
class Solution {
public int solution(String s) {
String[] strArr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < strArr.length; i++) {
s = s.replaceAll(strArr[i], Integer.toString(i));
}
return Integer.parseInt(s);
}
}
다른 사람의 접근 방식
- string 배열로 자릿수 저장
- for문의 정수 i(0~9)를 string으로 변환 후 배열의 자릿수를 대체한다.
- 자릿수 대체는 문자열 s를
replaceAll()
를 이용하여 문자 전체 대체한다.
- string으로 저장 후 정수로 변환(Integer.valueOf 또는 Integer.parseInt() 사용)
📝 후기
- map의 key,value 형태를 이용한 방법이 먼저 떠올랐다.
- 문자 배열을 이용하고 for문의 정수 i를 통해 자릿수를 변경하는 방법이 내 방법보다 효율적인거 같아 최대한 주어진 문제 설명을 보고 풀이 때 사용해야될 키워드를 생각해봐야겠다.