본문 바로가기

JAVA공부

HashMap, String.split()

HashMap은 Java에서 많이 사용되는 데이터 구조 중 하나로, 키-값(key-value) 쌍을 저장하는데 사용됩니다. 여기서 각 키는 고유(unique)해야 하며, 하나의 키는 하나의 값과 연관되어 있습니다.

Map 인터페이스를 구현한 HashMap 클래스는 해시 테이블(hash table)을 기반으로 합니다. 해시 테이블은 배열과 같은 구조를 가지고 있으며, 각 키-값 쌍은 해시 함수를 사용하여 배열의 인덱스로 변환되어 저장됩니다.

이렇게 HashMap은 다음과 같은 특징을 갖습니다:

  1. 고속 검색: HashMap은 해시 함수를 사용하여 키를 해시 코드로 변환하고, 이를 기반으로 키와 관련된 값에 접근합니다. 이는 매우 빠른 검색 속도를 제공합니다.
  2. 고유한 키: HashMap은 중복된 키를 허용하지 않습니다. 따라서 각 키는 유일해야 합니다. 만약 동일한 키를 사용하여 값을 추가하면 기존 값은 대체됩니다.
  3. 키나 값으로 null 허용: HashMap은 null 키와 null 값을 허용합니다. 즉, null 값을 갖는 키나 값이 존재할 수 있습니다.
  4. 순서 없음: 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