[ 오늘의 코테 연습장 ] [ LeetCode ] 383. Ransom Note

Mini_me·2023년 8월 31일
0

공부[코테연습장]

목록 보기
27/36
post-thumbnail

📑 문제

magazine에 포함된 문자들로 ransomNote를 구성할 수 있다면 true를 반환하고, 그렇지 않다면 false를 반환하세요.

📑 문제 접근방식

처음에는 magazine에서 만들 수 있는 모든 부분 문자열을 조합해서 만든 후, 만든 문자열을 HashMap에 저장하고 HashMap에 ransonNote 문자열과 같은 문자열이 있다면, true을 반환하는 형식으로 구현할려고 했습니다.

하지만 좀 더 간단한 방법으로 구현하고 싶어서, 고민을 하던 중, magazine 문자열의 문자 등장횟수를 HashMap에 저장해서, ransomNote의 문자 등장횟수와 비교해서 등장횟수가 ransomNote의 문자 등장횟수가 더 크거나, ransomNote의 문자가 magazine에 포함되어있지않으면, fasle를 return 하고, 그 이외의 경우에는 true를 리턴하는 형식으로 구현했습니다.

이렇게 구현하니, HashMap도 활용할 수 있고, 훨씬 단순하고 간결한 코드를 작성할 수 있었습니다.

📑 Code

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
     HashMap<Character,Integer> countMagMap = new HashMap<>();
       HashMap<Character,Integer> countRanMap = new HashMap<>();
      for(char c : magazine.toCharArray()){
       countMagMap.put(c, countMagMap.getOrDefault(c, 0) + 1);
        }
        for(char c : ransomNote.toCharArray()){
       countRanMap.put(c,  countRanMap.getOrDefault(c, 0) + 1);
        }
       for (char c : countRanMap.keySet()) {
        if (! countMagMap.containsKey(c) || countMagMap.get(c) < countRanMap.get(c)) {
        return false;
          }
}
        return true;
    }
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN