boj)1919
2020. 8. 23. 15:34ㆍPS/boj
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
/**
* #1919) 에너그램 만들기
* 두 개의 단어가 순서를 바꿔서 같아질 수 있으면 이걸 에너그램이라고 함
* 두 단어가 서로 애너그램 관계에 있도록 만들기 위해서 제거해야 하는 문자의 최소 개수
* 문자를 제거할 때에는 아무 위치에 있든 상관 없음
* 문자 A,B에서 둘다 제거가능
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String A = br.readLine();
String B = br.readLine();
int[] arr = new int[26];
int[] brr = new int[26];
int count = 0;
// - 'a' 로 0~25까지에 알파벳 수 카운팅
for (int i = 0; i < A.length(); i++) {
arr[A.charAt(i) - 'a']++;
}
for (int i = 0; i < B.length(); i++) {
brr[B.charAt(i) - 'a']++;
}
// 결국 카운팅된값이 다를때 제거해야하는 경우가 생김
// 이때, 큰쪽에서 작은쪽을 빼준다
for (int i = 0; i < arr.length; i++) {
if (arr[i] > brr[i]) {
count += arr[i] - brr[i];
} else if (arr[i] < brr[i]) {
count += brr[i] - arr[i];
}
}
System.out.println(count);
}
}
- 여러번 시도해서 성공
- 중간에 무조건 arr[i] = brr[i]이 같을경우에 카운트를 증가시키지 않았는데 한쪽이 더 많을경우에도 제거해야한다