질문 링크: 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);
}
}