코테/프로그래머스

[프로그래머스/Lv. 0] 모스부호 (1)

imname1am 2023. 2. 16. 15:16
반응형

내 코드 (틀림)

import java.util.*;

class Solution {
    public String solution(String letter) {
        String answer = "";
        String[] strArr = letter.split(" ");
        
        for(String s : strArr) {
            if(s.equals("._"))          answer += "a";
            else if(s.equals("-..."))   answer += "b";
            else if(s.equals("-.-."))   answer += "c";
            else if(s.equals("-.."))    answer += "d";
            else if(s.equals("."))      answer += "e";
            else if(s.equals("..-."))   answer += "f";
            else if(s.equals("--."))    answer += "g";
            else if(s.equals("...."))   answer += "h";
            else if(s.equals("-..."))   answer += "i";
            else if(s.equals(".."))     answer += "j";
            else if(s.equals("-.-"))    answer += "k";
            else if(s.equals(".-.."))   answer += "l";
            else if(s.equals("--"))     answer += "m";
            else if(s.equals("-."))     answer += "n";
            else if(s.equals("---"))    answer += "o";
            else if(s.equals(".--."))   answer += "p";
            else if(s.equals("--.-"))   answer += "q";
            else if(s.equals(".-."))    answer += "r";
            else if(s.equals("..."))    answer += "s";
            else if(s.equals("-"))      answer += "t";
            else if(s.equals("..-"))    answer += "u";
            else if(s.equals("...-"))   answer += "v";
            else if(s.equals(".--"))    answer += "w";
            else if(s.equals("-..-"))   answer += "x";
            else if(s.equals("-.--"))   answer += "y";
            else if(s.equals("--.."))   answer += "z";
        }
        
        return answer;
    }
}

딕셔너리 방식을 써볼까 하다가 먼저 노가다식으로 해보기로 했다.

근데 패스 못함..ㅋ

 

 

그래서 그냥 코드 값을 갖고 있는 배열을 만들고,

이 값과 비교해서 같으면 알파벳으로 만들어주기로함...

import java.util.*;

class Solution {
    public String solution(String letter) {
        String answer = "";
        String[] strArr = letter.split(" ");
        String[] codes = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

        for(int i=0 ; i < strArr.length ; i++) {
            for(int j=0 ; j < codes.length ; j++) {
                if(strArr[i].equals(codes[j])) {
                    answer += (char)(j + 'a');
                }
            }
        }
        
        return answer;
    }
}

· 'a' 대신 97 써도 됨.

 

[Java] ASCII (아스키코드)/ 문자 ↔ 숫자

ASCII: American Standard Code for Information Interchange, 미국 정보 교환 표준 부호) 예제)...

blog.naver.com

· (char) : 숫자를 문자로 변환

 

 

[Java] 아스키코드, 유니코드를 문자나 숫자로 변환하기

아스키코드 미국에서 표준화가 추진된 정보교환용 7bit 부호로 정의합니다. 1962년 안시(ANSI)가 정의한 미국 표준 정보교환 코드이며 1963년 미국표준협회(ASA)에 의해 결정되어 미국의 표준 부호가

coding-factory.tistory.com

값 치환하기,,,!!!


Map 쓸 생각도 했었는데 이 방법으로 구현한 다른 답도 있었다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Map;
import java.util.HashMap;

class Solution {
    public String solution(String letter) {
        String answer = "";
        Map<String, String> morse = new HashMap<>(){
            {
                put(".-","a");
                put("-...","b");
                put("-.-.","c");
                put("-..","d");
                put(".","e");
                put("..-.","f");
                put("--.","g");
                put("....","h");
                put("..","i");
                put(".---","j");
                put("-.-","k");
                put(".-..","l");
                put("--","m");
                put("-.","n");
                put("---","o");
                put(".--.","p");
                put("--.-","q");
                put(".-.","r");
                put("...","s");
                put("-","t");
                put("..-","u");
                put("...-","v");
                put(".--","w");
                put("-..-","x");
                put("-.--","y");
                put("--..","z");
            }
        };
        
        String[] letters = letter.split(" ");
        
        for(String str : letters){
            answer += morse.get(str);
        }
        return answer;
    }
}
 

홈짱닷컴

홈페이지 제작, 그누보드 강의, 웹코딩, HTML, CSS, JAVASCRIPT, JQUERY, PHP, SQL

homzzang.com

 

반응형