입력으로 들어올 문자열 갯수를 받은 뒤, 모스 부호를 받아 위에 있는 값들과 치환시켜서 출력해야 하는데, 문제 자체는 단순하지만 모든 모스 부호를 입력해야 하기 때문에 상당히 고통스럽다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class MorseCode {
public static HashMap<String, String> makeMorseMap() {
HashMap<String, String> map = new HashMap<>();
map.put(".-", "A");
map.put("-...", "B");
map.put("-.-.", "C");
map.put("-..", "D");
map.put(".", "E");
map.put("..-.", "F");
map.put("--.", "G");
map.put("....", "H");
map.put("..", "I");
map.put(".---", "J");
map.put("-.-", "K");
map.put(".-..", "L");
map.put("--", "M");
map.put("-.", "N");
map.put("---", "O");
map.put(".--.", "P");
map.put("--.-", "Q");
map.put(".-.", "R");
map.put("...", "S");
map.put("-", "T");
map.put("..-", "U");
map.put("...-", "V");
map.put(".--", "W");
map.put("-..-", "X");
map.put("-.--", "Y");
map.put("--..", "Z");
map.put(".----", "1");
map.put("..---", "2");
map.put("...--", "3");
map.put("....-", "4");
map.put(".....", "5");
map.put("-....", "6");
map.put("--...", "7");
map.put("---..", "8");
map.put("----.", "9");
map.put("-----", "0");
map.put("--..--", ",");
map.put(".-.-.-", ".");
map.put("..--..", "?");
map.put("---...", ":");
map.put("-....-", "-");
map.put(".--.-.", "@");
return map;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
String[] split = br.readLine().split(" ");
HashMap<String, String> map = makeMorseMap();
StringBuilder s = new StringBuilder();
for (String value : split) {
s.append(map.get(value));
}
System.out.println(s.toString());
}
}
문제 풀이 자체는 단순하게 모스 부호를 map에 넣어준 뒤, 처음 입력받은 횟수만큼 for 문을 돌려주되, 입력받은 값을 split으로 쪼개서 해당 값을 map의 get 메소드를 이용해 찾은 뒤 붙여 나가다가, for문 다 돌리고 나면 출력해주면 간단하게 끝이다
문제 풀이보다 수작업으로 넣어야 하는 모스 부호가 정말 많기 때문에, 여기서 실수나서 틀리는 것을 주의해야 한다.
Leave a Reply