ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj)1919
    PS/boj 2020. 8. 23. 15:34
    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
킹수빈닷컴