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

또치·2023년 1월 17일
0

프로그래머스 JAVA

목록 보기
2/20
post-thumbnail

모스부호(1)

🐬 기억하고 싶은 부분 🐬
< 아스키코드 -> 문자 변환 >
char code = (char)97
// 문자로 변환하고 싶은 코드를 넣어주기!
결과 code=a

🎯 문제

머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다.
문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
모스부호는 다음과 같습니다

<제한사항>
1 ≤ letter의 길이 ≤ 1,000
return값은 소문자입니다.
letter의 모스부호는 공백으로 나누어져 있습니다.
letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
해독할 수 없는 편지는 주어지지 않습니다.
편지의 시작과 끝에는 공백이 없습니다.

답안

import java.util.Arrays;
class Solution {
    public String solution(String letter) {
        String answer = "";
        
		String[] morse = new String[]{
				".-","-...","-.-.","-..",".",
				"..-.","--.","....","..",".---",
				"-.-",".-..","--","-.","---",
				".--.","--.-",".-.","...","-",
				"..-","...-",".--","-..-","-.--",
				"--.."};
                
        // 받은 변수 공백기준으로 잘라서 배열에 넣어주기
		String[] array=letter.split(" ");
		// morse배열에서 array 각각의 값이 몇번째 있는지 알아낸 다음에
        // a-z 순이니까 a의 아스키코드 97더해서 아스키코드로 알아내기
        // 그리고 아스키코드 -> 문자변환
		for(int i=0; i<array.length; i++) {
			int b=Arrays.asList(morse).indexOf(array[i])+97;
			char a=(char)b;
			answer+=a;
		}       
        return answer;
    }
}

🧵 과정

일단 처음에 모스부호를 가지고 오는것부터 약간 어려웠어...문제에 써져있는 애 자체를 객체로 가지고 오고 싶었는데 내가 잘못하는 건지 계속 안돼서 일단 배열로 갖고 와서 해결했는데 생각해보니까 그냥 배열로 갖고오는게 맞는것같다.
암튼 주어진 변수를 공백기준으로 자른다음에 모스부호배열에 각각의 값이 몇번쨰에 있는지와 순서가 a부터니까 97더해서 아스키코드랑 맞춰줬다.
아스키코드 -> 문자변환하는거 이전 문제에서도 여러번 써먹었는데 자꾸 까먹어서 적어뒀다!!!

0개의 댓글