boj)1919

2020. 8. 23. 15:34PS/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]이 같을경우에 카운트를 증가시키지 않았는데 한쪽이 더 많을경우에도 제거해야한다

 

 

 

https://www.acmicpc.net/problem/1919

'PS > boj' 카테고리의 다른 글

boj)1049  (0) 2020.08.24
boj)1475  (0) 2020.08.23
boj)13330  (0) 2020.08.23
boj)11328  (0) 2020.08.23
boj)2577  (0) 2020.08.23