[알고리즘] HashMap, TreeSet(2) : 아나그램(JAVA)

ho's·2022년 5월 27일
0

🎪 아나그램(JAVA)

🥼 문제

👖 풀이

📖 어떻게 문제를 풀 것 인가?

📖 solution 메소드

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 String solution(String s1, String s2)

  • solution메소드는 String형식을 반환하고, s1,s2를 매개변수로 받는다.

HashMap<Character, Integer> map = new HashMap<>();

  • HashMap 객체를 만든다. Key값은 Character, Value값은 Integer를 갖는다.
for(char x: s1.tocharArray()){
	map.put(x, map.getOrDefault(x, 0)+1);
}

입력받은 String형식의 s1을 char형식의 배열에 저장한다.
그 후, map.getOrDefault() 메소드를 이용해, x의 값이 있다면 x의 Value를, 없다면 0을 Key값으로 얻고 +1 을 해준다.

for(char x : s2.tocharArray()){
	if(!map.containsKey(x) || map.get(x) == 0 )
    	return "NO";
    map.put(x, map.get(x)-1);
}
  • 입력받은 String형식의 s2를 char형식의 배열에 저장한다.
    그 후, 위의 for을 이용해 저장한 map의 key값이 존재하지 않거나, map.get(x)의 값이 0이 된다면, 문제에서 만족하는 조건이 되지 않는 것을 의미하므로 "NO"를 반환한다.

  • if문이 통과가 된다면 map.put을 이용해 x의 Value값에서 1을 빼준다.

🥾 소스코드

package algolecture;

import java.util.HashMap;
import java.util.Scanner;

public class Main32 {

    public String solution(String s1, String s2){

        String answer = "YES";
        HashMap<Character, Integer> map = new HashMap<>();
        // 제네릭 타입 생략가능!
        for(char x : s1.toCharArray()){
            System.out.println(x);
            map.put(x, map.getOrDefault(x,0)+1);
        }
        for(char x : s2.toCharArray()){
            System.out.println(x);
            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) {
        Main32 T = new Main32();
        Scanner kb = new Scanner(System.in);
        String a = kb.next();
        String b = kb.next();
        System.out.print(T.solution(a,b));
    }
}
profile
그래야만 한다

0개의 댓글