HashMap, TreeSet(자료구조) - 0402. 아나그램
private static String solution(String str1, String str2) {
HashMap<Character, Integer> map = new HashMap<>();
for(char c : str1.toCharArray()) {
map.merge(c, 1, Integer::sum);
}
for(char c : str2.toCharArray()) {
if(!map.containsKey(c) || map.get(c) <= 0) return "NO";
else map.merge(c, -1, Integer::sum);
}
return "YES";
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
System.out.println(solution(str1, str2));
}
}
public String solution(String s1, String s2){
String answer="YES";
HashMap<Character, Integer> map=new HashMap<>();
for(char x : s1.toCharArray()){
map.put(x, map.getOrDefault(x, 0)+1);
}
for(char x : s2.toCharArray()){
if(!map.containsKey(x) || map.get(x)==0) return "NO";
map.put(x, map.get(x)-1);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String a=kb.next();
String b=kb.next();
System.out.print(T.solution(a, b));
}
해당 문제는 Map
을 이용하여 푸는 문제이다. Map
은 Java에서 제공하는 자료구조로,
Key
와 Value
로 데이터를 핸들한다. 특징으로 Key
는 유일하며, Value
는 중복이 가능하다.
나의 풀이에서는 map.containsKey(key)
메소드를 통해 존재 유무를 확인한 후 값을 추가하도록
구성하였고, 강의에서는 map.getOrDefault(key, value)
메소드를 사용하였다.
이후 map.ketSet()
를 순회하며 가장 큰 값을 갖고 있는 key
를 찾는다.