HashMap<String, String> map = new LinkedHashMap<String, String>();
HashMap을 사용
입력된 key의 순서가 보장되어야하므로 LinkedHashMap 사용
key와 value 값을 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");
HashMap의 변수인 map에 데이터를 넣기 위해 put()
사용
영단어는 key, 숫자는 value로 초기화
for(String key : map.keySet()){
if(s.contains(key)){
s = s.replace(key, map.get(key));
}
}
String 변수 key 선언
전체 key값들의 길이만큼 반복으로 실행
이때, 만약 String 배열에서 key가 있으면
replace()
함수를 사용하여 문자열에 존재하는 영단어를 map이 가지고 있는 숫자 문자열로 치환하여 String 배열의 변수 s에 저장
int answer = Integer.parseInt(s);
return answer;
()
를 사용하여 정수로 변경 후 returnimport java.util.HashMap; import java.util.LinkedHashMap; class Solution { public int solution(String s) { HashMap<String, String> map = new LinkedHashMap<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"); for(String key : map.keySet()){ if(s.contains(key)){ s = s.replace(key, map.get(key)); } } int answer = Integer.parseInt(s); return answer; } }
class Solution { public int solution(String s) { String[] num = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for (int i = 0; i < 10; i++) { s = s.replace(num[i], Integer.toString(i)); } int answer = Integer.parseInt(s); return answer; } }
일치하는 문자가 있는지 비교를 위해 String으로 num 배열을 만들어줌
숫자가 0~9까지 10개로 정해져있으므로 for문은 for(int i=0; i<10; i++) 로 만듦
replace()
를 활용해 문자열로 치환하여 String 타입의 변수 s에 저장
Integer.parseInt()
를 사용하여 String 타입을 int 타입으로 변환 후 answer에 저장 후 return