[코테4_2] 아나그램(해쉬)

byeol·2022년 12월 4일
0

코딩테스트

목록 보기
25/42

✔️ 내 답 -> 정답

import java.util.*;


public class Main {
 public static String solution(String A, String B){
	 HashMap<Character,Integer> mapA = new HashMap<>();
	 HashMap<Character,Integer> mapB = new HashMap<>();
	 
	 for(char x : A.toCharArray()) {
		 mapA.put(x,mapA.getOrDefault(x,0)+1);
	 }

	 for(char x : B.toCharArray()) {
		 mapB.put(x,mapB.getOrDefault(x,0)+1);
	 }
	 
	 if(mapA.equals(mapB)) return "YES";
	 else return "NO";
	 
 }
 public static void main(String[] args){
  Scanner kb = new Scanner(System.in);
  String A = kb.next();
  String B = kb.next();
  System.out.println(solution(A,B));
 }
}

여기서 중요한 것

HashMap은 저장할 때 정렬되지 않은 채로 저장하나요? 아니요 꼭 그렇지만은 않습니다!

(JAVA) HashSet은 정렬을 지원하지 않는다고 들었는대?https://jwdeveloper.tistory.com/m/278


중간에 출력 값들을 보기위해 위와 같이 코드를 추가한 결과

위와 같은 결과가 나왔다.
보면 정렬이 어느정도 되어져 있는 것을 확인 할 수 있다.

두개의 HashMap을 비교할 때는 어떻게 비교하나요?

Compare Two HashMap Objects in Java
https://www.geeksforgeeks.org/compare-two-hashmap-objects-in-java/

✔️ 강의

import java.util.*;


public class Main {
 public static String solution(String A, String B){
	 HashMap<Character,Integer> mapA = new HashMap<>();
	 HashMap<Character,Integer> mapB = new HashMap<>();
	 
	 for(char x : A.toCharArray()) {
		 mapA.put(x,mapA.getOrDefault(x,0)+1);
	 }
     
	 for(char x : B.toCharArray()) {
		 if(mapA.get(x)>0) {
		 mapA.put(x,mapA.get(x)-1);
		 }
		 else {
			 return"NO";
		 }
	 }
     return "YES";
	
	 
 }
 public static void main(String[] args){
  Scanner kb = new Scanner(System.in);
  String A = kb.next();
  String B = kb.next();
  System.out.println(solution(A,B));
 }
}

강의는 -1씩 해서 결국 모두 0으로 만드는 HashMap을 반환했을 시 "YES"를 리턴하도록 설정했다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글