[문제풀이] 04-02. 아나그램

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 31일
0

인프런, 자바(Java) 알고리즘 문제풀이

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에서 제공하는 자료구조로,
KeyValue로 데이터를 핸들한다. 특징으로 Key는 유일하며, Value는 중복이 가능하다.

나의 풀이에서는 map.containsKey(key) 메소드를 통해 존재 유무를 확인한 후 값을 추가하도록
구성하였고, 강의에서는 map.getOrDefault(key, value) 메소드를 사용하였다.

이후 map.ketSet()를 순회하며 가장 큰 값을 갖고 있는 key를 찾는다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글