(알고리즘) 백준 1919 – 단어 퍼즐 만들기

질문 링크: https://www.acmicpc.net/problem/1919


질문

철자 순서를 뒤집어서 동일하게 만들 수 있는 두 영어 단어 사이에 아나그램 관계가 존재합니다.

예를 들어 영어 단어 발생과 구조 사이에는 애너그램 관계가 있는데, 발생하는 각 글자의 순서가 잘 바뀌면 구조가 되기 때문입니다.

반면 Dared와 bread는 서로 아나그램 관계가 없습니다.

그러나 Dared의 첫 번째 d와 bread의 첫 번째 b를 삭제하면 ared와 read가 서로 아나그램으로 남습니다.

두 개의 영어 단어가 주어졌을 때 두 단어가 서로 애너그램 관계를 갖기 위해 제거해야 하는 최소 문자 수를 찾는 프로그램을 작성하십시오. 문자를 삭제할 때 임의의 위치에 있는 문자를 삭제할 수 있습니다.

입력하다

첫 번째와 두 번째 줄에는 영어 단어가 소문자로 표시됩니다.

각 단어는 길이가 1,000자를 넘지 않아야 하며 적어도 하나의 문자로 구성되어야 합니다.

인쇄

답을 첫 번째 줄에 인쇄하십시오.

예제 입력

aabbcc
xxyybb

샘플 출력

8

솔루션

1. 각 단어에 사용된 글자 수 찾기 → 배열은 글자 수와 같음
2. 글자수를 구한 후 각 단어의 글자수 차이를 구한다(Math의 절대값(abs)을 이용)

비밀번호

import java.util.Scanner;

public class Main {
    public static int() get_alphabet_count(String str) {
        int() count = new int(26);
        
        for (int i = 0; i < str.length(); i++) {
            count(str.charAt(i) - 'a')++;
        }
        
        return count;
    }
    public static void main(String() args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        
        int() a_count = get_alphabet_count(a);
        int() b_count = get_alphabet_count(b);
        
        int ans = 0;
        for (int i = 0; i < 26; i++) {
            ans += Math.abs(a_count(i) - b_count(i));
        }
        
        System.out.println(ans);
    }
}