개발놀이터

4-4. 모든 아나그램 찾기 본문

기타/코딩테스트

4-4. 모든 아나그램 찾기

마늘냄새폴폴 2023. 2. 23. 07:12

 

package HashMap그리고TreeSet4장.모든아나그램찾기4다시4.my;

import java.util.HashMap;
import java.util.Scanner;

public class Main {

    /**
     * 피드백 할 것 없음 이전 문제와 완벽히 동일
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String input1 = kb.next();
        String input2 = kb.next();

        System.out.println(solution(input1, input2));
    }

    private static int solution(String input1, String input2) {
        int answer = 0;
        int start= 0, end = input2.length();
        HashMap<Character, Integer> map1 = new HashMap<>();
        HashMap<Character, Integer> map2 = new HashMap<>();
        char[] input1Array = input1.toCharArray();
        char[] input2Array = input2.toCharArray();

        for (int i = 0; i < input2.length(); i++) {
            map1.put(input1Array[i], map1.getOrDefault(input1Array[i], 0) + 1);
        }

        for (char c : input2Array) {
            map2.put(c, map2.getOrDefault(c, 0) + 1);
        }

        if (map1.equals(map2)) {
            answer++;
        }

        while (end < input1.length()) {
            map1.put(input1Array[end], map1.getOrDefault(input1Array[end], 0) + 1);
            end++;

            map1.put(input1Array[start], map1.get(input1Array[start]) - 1);

            if (map1.get(input1Array[start]) == 0) {
                map1.remove(input1Array[start]);
            }

            start++;

            if (map1.equals(map2)) {
                answer++;
            }
        }

        return answer;
    }
}

'기타 > 코딩테스트' 카테고리의 다른 글

4장 주요개념 및 복습  (0) 2023.02.23
4-5. K번째로 큰 수  (0) 2023.02.23
4-3. 매출액의 종류  (0) 2023.02.23
4-2. 아나그램  (0) 2023.02.23
4-1. 학급회장  (0) 2023.02.23