개발/코딩

[프로그래머스] 0LV_모스부호(1) 재밌는 문제

mabb 2023. 6. 10. 19:14
반응형

java기본기와 코딩감을 익히고자 (사실은 재미있어서) 프로그래머스 0 레벨 문제부터 풀어보고 있다. Stream이나 람다도 사용해 보고, 자바 도큐먼트를 참고하며 몰랐던 표준라이브러리 기능을 사용해보고 있다. 조금 더 효율적으로 푸는 방법을 생각해 보는 과정이 정말 재밌다. 그리고 문제를 풀고 나면 다른 사람들의 풀이 코드를 볼 수 있는데 이게 또 정말 배울 것이 많고 재미있는 부분이다.

 이 문제는 JSON형태의 morse를 주고 모스부호 문자열을 해당하는 소문자 알파벳으로 치환하는 문제. 국비지원 컴퓨터학원 시절, 자바에서 JSON타입을 다루기 위해 JSONObject, jackson 등의 라이브러리를 사용했던 적이 있었다. 표준 라이브러리만 지원하는 프로그래머스 환경에서 외부 라이브러리를 사용할 수는 없으므로 주어진 JSON형태의 문자열을 이용하여 직접 Map으로 변환을 해보았다.

문자열을 파싱하면서 JSON형태의 문자열을 Map타입으로 바꾸어보는 게 왠지 특히 재미있어서 나중에 기억하고자 포스팅해 보았다.  

출처: 프로그래머스 코딩테스트 연습

import java.util.*;

class Solution {
    public String solution(String letter) {
        String answer = "";
        StringBuilder builder = new StringBuilder();
        //strJson to Map
        String morse = "'.-':'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'";
        Map<String,String> map = new HashMap<>();
        String[] strTmp = morse.split(",");
        for(String str:strTmp){
            str = str.replaceAll("'","");
            String key = str.substring(0,str.indexOf(":"));
            String value = str.substring(str.indexOf(":")+1);
            map.put(key,value);
        }

        //System.out.println(map.get(".-"));

        for(String str:letter.split(" ")){
            builder.append(map.get(str));            
        }
        answer = builder.toString();
        return answer;
    }
}
반응형