HashMap은 Java에서 많이 사용되는 데이터 구조 중 하나로, 키-값(key-value) 쌍을 저장하는데 사용됩니다. 여기서 각 키는 고유(unique)해야 하며, 하나의 키는 하나의 값과 연관되어 있습니다.
Map 인터페이스를 구현한 HashMap 클래스는 해시 테이블(hash table)을 기반으로 합니다. 해시 테이블은 배열과 같은 구조를 가지고 있으며, 각 키-값 쌍은 해시 함수를 사용하여 배열의 인덱스로 변환되어 저장됩니다.
이렇게 HashMap은 다음과 같은 특징을 갖습니다:
- 고속 검색: HashMap은 해시 함수를 사용하여 키를 해시 코드로 변환하고, 이를 기반으로 키와 관련된 값에 접근합니다. 이는 매우 빠른 검색 속도를 제공합니다.
- 고유한 키: HashMap은 중복된 키를 허용하지 않습니다. 따라서 각 키는 유일해야 합니다. 만약 동일한 키를 사용하여 값을 추가하면 기존 값은 대체됩니다.
- 키나 값으로 null 허용: HashMap은 null 키와 null 값을 허용합니다. 즉, null 값을 갖는 키나 값이 존재할 수 있습니다.
- 순서 없음: HashMap은 요소의 순서를 보장하지 않습니다. 즉, 요소를 추가한 순서대로 나열되지 않습니다.
따라서 위의 코드에서 Map<String, String> morse = new HashMap<>();는 키와 값이 모두 문자열(String)인 HashMap을 생성하는 것입니다. 이렇게 생성된 HashMap에는 Morse 코드와 해당하는 알파벳을 저장할 수 있습니다. 여기서 키는 Morse 코드이고, 값은 해당하는 알파벳입니다.
String.split() 메서드는 문자열을 주어진 구분자(delimiter)를 기준으로 분리하여 문자열 배열로 반환합니다. 여기서 구분자는 주어진 문자열에서 실제로 발견되는 패턴입니다.
String[] result = 문자열.split(구분자);
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String letter) {
Map<String, String> morse = new HashMap<>();
morse.put(".-", "a");
morse.put("-...", "b");
morse.put("-.-.", "c");
morse.put("-..", "d");
morse.put(".", "e");
morse.put("..-.", "f");
morse.put("--.", "g");
morse.put("....", "h");
morse.put("..", "i");
morse.put(".---", "j");
morse.put("-.-", "k");
morse.put(".-..", "l");
morse.put("--", "m");
morse.put("-.", "n");
morse.put("---", "o");
morse.put(".--.", "p");
morse.put("--.-", "q");
morse.put(".-.", "r");
morse.put("...", "s");
morse.put("-", "t");
morse.put("..-", "u");
morse.put("...-", "v");
morse.put(".--", "w");
morse.put("-..-", "x");
morse.put("-.--", "y");
morse.put("--..", "z");
StringBuilder answer = new StringBuilder();
// 공백을 기준으로 문자열을 분할하여 각 부분을 처리
String[] words = letter.split(" ");
for (String word : words) {
// 공백을 제외한 문자열이 모스 코드인 경우에만 변환
if (morse.containsKey(word)) {
answer.append(morse.get(word));
}
}
return answer.toString();
}
}
'JAVA공부' 카테고리의 다른 글
Math.sqrt(i) (0) | 2024.02.19 |
---|---|
재귀함수 (0) | 2024.02.16 |
StringBuilder (0) | 2024.02.07 |
(int) Arrays.stream(array).average().orElse(0); (0) | 2024.02.06 |
stream이란. (0) | 2024.02.01 |