다른 사람의 풀이
import java.util.HashMap;
class Solution {
public String solution(String letter) {
String morseStr = "'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',"
+ "'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',"
+ "'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',"
+ "'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',"
+ "'-.--':'y','--..':'z'";
String[] morseArr = morseStr.split(",");
String[] letterArr = letter.split(" ");
HashMap<String, String> morse = new HashMap<String, String>();
for (int i = 0; i < morseArr.length; i++) {
morseArr[i] = morseArr[i].replace("'", "");
int idx = morseArr[i].indexOf(":");
morse.put(morseArr[i].substring(0, idx), morseArr[i].substring(idx+1));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < letterArr.length; i++) {
sb.append(morse.get(letterArr[i]));
}
return sb.toString();
}
}
▶ String클래스의 split() 메서드를 이용해서 거대한 문자열(morse)을 " , "를 구분자로 하여
String배열 타입으로 쪼갠다.
▶ letter문자열을 split() 메서드를 이용해서 공백을 기준으로 쪼갠다.
▶ morseArr[ i ]의 위첨자는 replace() 메서드를 사용하여 제거한다.
▶ indexOf() 메서드를 이용해서 : (콜론)이 위치한 인덱스의 번호를 반환받아
int타입의 idx에 저장한다.
▶ moreseArr [ i ]의 문자열을 : (콜론)을 기준으로 콜론 앞은 "키(key)"로 저장하고,
▶ 콜론 뒤는 "값(value)"로 HashMap에 저장한다.
▶ letterArr[ i ] = key 인데 morse.get(key)
▶ morse HashMap에서 morse 키(key)에 해당하는 값을 얻어서 그 값을 StringBuilder객체에
append 집어 넣는다.
▶ Map의 put()메서드는 put(key, value) 형태로 값을 입력한다.
▶ get(key) 키에 해당하는 값을 꺼낸다.
▶ sb.append("문자열") : 해당 문자열을 StringBuilder 객체에 집어 넣는다.
▶ substring(A, B) A부터 B직전까지 슬라이싱한다.
▶ substring(A) A부터 끝까지 슬라이싱한다.
'프로그래머스(자바) > LV.0(자바)' 카테고리의 다른 글
A로 B만들기 → steam을 이용한 문자열정렬★ (0) | 2022.11.25 |
---|---|
중복된 문자제거 → Set자료형, 메서드 참조, distinct()★★ (0) | 2022.11.25 |
합성수 찾기 → 이중 stream★ filter()를 두 번 사용할 필요x (0) | 2022.11.25 |
외계행성의 나이 →Stream끝판왕★ (0) | 2022.11.25 |
369게임 → count()★, Stream개념정리용★ (0) | 2022.11.25 |