본문 바로가기
CodingTest/Programmers

[프로그래머스] Lv.0 모스부호

by yoondoo 2022. 12. 1.
728x90
class Solution {
    public String solution(String letter) {
        String answer = "";
        String []arrStr = letter.split(" ");
		
		String []mose = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
		
		
		for(int i=0; i<arrStr.length; i++) {
			for(int j=0; j<mose.length; j++) {
				if(arrStr[i].equals(mose[j])) {
					answer += (char)(j + 'a');		// j + 'a'
				}
			}
		}
        return answer;
    }
}

우선 매개변수 letter에 있는 문자를 공백으로 모스부호가 찍혀있기 때문에
공백을 기준으로 문자열 배열에 넣어주고
모스 문자열배열에 0부터 끝까지 비교하면서
만약 모스 문자배열과 일치한다면 모스 문자배열의 인덱스가 해당 알파벳이 될 것이다.
arrStr[0] = ".-" 이면 mose[0]의 ".-" 과 일치하기 때문에
mose배열의 인덱스 0은 'a'를 뜻하므로 j번째(여기선 0) + 'a'(유니코드97)을 해주면 'a'가 answer에 저장된다. 

한가지 주의할 점은 
j+'a'를 명시적 형변환 할 때, (char)j+'a' 가 아니라 (char)(j+'a')처럼 괄호로 묶어줘야 원하는 문자가 저장된다.

반응형

댓글