두 문자열 ransomNote
와 magazine
이 주어졌을 때, magazine
의 문자를 사용하여 ransomNote
를 구성할 수 있으면 true
를 반환하고 그렇지 않으면 false
를 반환합니다.
매거진의 각 문자는 랜섬노트에서 한 번만 사용할 수 있습니다.
import java.util.*;
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
Map<Character, Integer> count = new HashMap<>();
for (char c : magazine.toCharArray()) {
count.merge(c, 1, Integer::sum);
}
for (char c : ransomNote.toCharArray()) {
if (!count.containsKey(c) || count.get(c) == 0) {
return false;
}
count.merge(c, -1, Integer::sum);
}
return true;
}
}
알파벳 별로 map을 만들어서, merge 메서드를 이용하여 magazine에 있는 알파벳들의 숫자들을 count해줍니다.
이후 ransomNote를 순회하면서, 해당 값이 없거나 0인 경우 구성할 수 없으므로 false를 반환하고 모든 순회가 끝나면 구성할 수 있는 상황이므로 true를 반환합니다.