공구일 2025. 4. 3. 04:06
728x90

🔍자바 : 코딩테스트 . 모스부호(1)

 

01. 코드 기획 단계 

- 모스부호를 파이썬의 딕셔너리 형식으로 주어졌길래 이걸 자바 내부에 있는 컬렉션 중 딕셔너리처럼 키-쌍을 갖는 맵에 넣어서 사용하려고 했습니다. 정렬을 고려하여 트리맵을 이용해주었습니다.(키값에 넣어줘야하는데 값에 넣어줘서 정렬에 조금 번거로워지긴 했습니다.)

 

- 일칙하는 경우 answer 문자 배열에 넣어서 String으로 만들어줄 것입니다.


02. 코드 실행 및 오류 잡기

import java.util.TreeMap;

class Solution {
    public String solution(String letter) {
        TreeMap<String, Character> morse = new TreeMap<>();
        
        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');
        String[] word = letter.split(" ");
        char[] answer = new char[word.length];
        int index = 0;
        for(String m : word){
            if(morse.containsKey(m)){
                answer[index++] = morse.get(m);
            }
        }
        
        String answerEnd = new String(answer);
        return answerEnd;
    }
}

 

03. 정리 

- 정렬에 유리한 트리맵을 이용하려했지만 초반 계획과는 다르게 사용하지 않게 되었습니다.

 

- 문자 배열을 문자열로 만드는 방법과 문자열을 문자배열로 만드는 방법입니다.

// 방법 1
String str1 = new String(charArray);
// 방법 2
String str2 = String.valueOf(charArray);
// --------------------------------------

char[] charArray = str.toCharArray();

 

728x90