99클럽 코테 스터디 24일차 TIL Decode the Message

방지환·2024년 6월 19일

코테 스터디

목록 보기
29/37

Decode the Message

  • 문제 풀이

    1. 주어진 key값이 중복된 값은 제거하고 a-z까지 대칭되게 한 후 message의 각각의 char에 대하여 치환해주는 문제이다.
  • 풀이 소스

class Solution {
    public String decodeMessage(String key, String message) {
        HashMap<Character, Integer> map = new HashMap<>();
        int num = 0;
        for(int i=0 ; i<key.length(); i++){
            if(key.charAt(i)!=' ' && !map.containsKey(key.charAt(i))){
                map.put(key.charAt(i),num++);
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<message.length(); i++){
            if(message.charAt(i) != ' '){
                sb.append((char)(97+map.get(message.charAt(i))));
            }else{
                sb.append(' ');
            }
        }
        return sb.toString();
    }
}
  • 오늘의 회고

    • 문제 시도 및 해결
      • HashMap을 통해 중복 및 띄어쓰기를 제거한 후 map에 넣어줬다.
      • map에 값을 넣어줄때는 해당 조건문을 통과할때마다 ++를 해줘 Integer값을 넣어줬다.
      • 그 후 message값에 맞게 for문을 통해 charAt에 해당하는 값이 ' '인지에 따라 조건문을 다르게 넣어줬다.
      • ' ' 일때는 단순히 값을 넣어줬으며 아닐때는 a의 문자의 값이 아스키코드로 97임으로 그값에다 map에 담아준 키를 기준으로 값을 가져와서 더해준 후 char로 캐스팅하여 append해줬다.
    • 학습 내용 및 회고
      • Map을 통해 키와 값을 띄어쓰기와 중복없이 넣어줬어햐했던게 키워드였다.
      • 또한 a가 아스키코드 97이라는것을 알수있었다.
      • 그리고 int와 Integer를 계산할떄 autoBoxing이 수행되어 값이 연산되었다는것도 알수있었다.
    • 다음 배울것
      • CS공부
      • 스프링공부
      • 알고리즘 공부

0개의 댓글