99클럽 코테 스터디 5일차 TIL + 해시

2024. 11. 1. 12:19카테고리 없음

 

 

백준 29701 모스 부호 자바 문제풀이 – My Codegate

문제 링크 입력으로 들어올 문자열 갯수를 받은 뒤, 모스 부호를 받아 위에 있는 값들과 치환시켜서 출력해야 하는데, 문제 자체는 단순하지만 모든 모스 부호를 입력해야 하기 때문에 상당히

mycodegate.com

 

1. 알고리즘! 생각해보자

1) 주어진 문자열 공백으로 split
2) 한 글자씩 hashmap 사용해서 모스부호 비교후 append
3) 변환한 글자 출력

2. 해결 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

public class Main {

  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());
  }
}

3. 레퍼런스

 

백준 29701 모스 부호 자바 문제풀이 – My Codegate

문제 링크 입력으로 들어올 문자열 갯수를 받은 뒤, 모스 부호를 받아 위에 있는 값들과 치환시켜서 출력해야 하는데, 문제 자체는 단순하지만 모든 모스 부호를 입력해야 하기 때문에 상당히

mycodegate.com