99클럽 코테 스터디 5일차 TIL
💙 JAVA 비기너
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
HashMap<String, String> morseMap = new HashMap<>();
morseMap.put(".-", "A");
morseMap.put("-...", "B");
morseMap.put("-.-.", "C");
morseMap.put("-..", "D");
morseMap.put(".", "E");
morseMap.put("..-.", "F");
morseMap.put("--.", "G");
morseMap.put("....", "H");
morseMap.put("..", "I");
morseMap.put(".---", "J");
morseMap.put("-.-", "K");
morseMap.put(".-..", "L");
morseMap.put("--", "M");
morseMap.put("-.", "N");
morseMap.put("---", "O");
morseMap.put(".--.", "P");
morseMap.put("--.-", "Q");
morseMap.put(".-.", "R");
morseMap.put("...", "S");
morseMap.put("-", "T");
morseMap.put("..-", "U");
morseMap.put("...-", "V");
morseMap.put(".--", "W");
morseMap.put("-..-", "X");
morseMap.put("-.--", "Y");
morseMap.put("--..", "Z");
morseMap.put(".----", "1");
morseMap.put("..---", "2");
morseMap.put("...--", "3");
morseMap.put("....-", "4");
morseMap.put(".....", "5");
morseMap.put("-....", "6");
morseMap.put("--...", "7");
morseMap.put("---..", "8");
morseMap.put("----.", "9");
morseMap.put("-----", "0");
morseMap.put("--..--", ",");
morseMap.put(".-.-.-", ".");
morseMap.put("..--..", "?");
morseMap.put("---...", ":");
morseMap.put("-....-", "-");
morseMap.put(".--.-.", "@");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
String[] codes = br.readLine().split(" ");
br.close();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (String code : codes) {
bw.write(morseMap.get(code));
}
bw.flush();
bw.close();
}
}
사실 이번 문제는 모스 부호를 정의하는 노가다가 제일 어렵지 문제 자체는 쉬웠다.
Hashmap
인 morseMap
에 문제에 나와있는 모스부호들을 하나하나 정성스레 put
해줘서 모스부호 사전을 만들었다.
그리고 글자 수와 모스부호를 bufferedReader
로 입력받아줬고 모스부호는 모스부호간의 간격인 공백에 따라 spilt()
를 통해 분리해 문자열 배열 codes
로 만들어줬다.
사실 모스부호가 연달아 나오고 글자 수로 알아서 구분하라는 건줄 알고 겁먹었는데 다행이 공백으로 분리가 되어 있었고 덕분에 글자 수는 입력받았지만 사용할 일이 없었다.😅
모스부호 배열인 codes
를 foreach문을 통해 하나씩 꺼내어 morseMap
에 키값으로 조회하고 값을 bufferedWriter
인 bw
에 write
해주었다.
마지막엔 bw
를 flush()
하여 안에 적힌 내용들을 출력시켜 주고 close()
하며 마무리!!