ffinn92 / Keep-at-solve-it

꾸준히 알고리즘 풀기 위한 스터디 저장소입니다.
2 stars 3 forks source link

[220711][BC][인프런](4-4) 모든 아나그램 찾기 #93

Closed honeySleepr closed 2 years ago

honeySleepr commented 2 years ago

📌 문제

⭐️ 아이디어

🤔 고민한 내용

💪 새롭게 배운 내용

🆘 이해가 어려운 내용

❌ 해결하지 못한 이유

✅ 본인 풀이

image

public class P0404 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] arr = br.readLine().split("");
        String[] target = br.readLine().split("");

        HashMap<String, Integer> targetMap = new HashMap<>();
        /*
         target = [a,l,l]이면
         targetMap = [{a,1}, {l,2}] 가 된다
         */
        for (int i = 0; i < target.length; i++) {
            targetMap.put(target[i], targetMap.getOrDefault(target[i], 0) + 1);
        }
        HashMap<String, Integer> map = new HashMap<>();

        int l = 0;
        int answer = 0;
        for (int r = 0; r < arr.length; r++) {
            map.put(arr[r], map.getOrDefault(arr[r], 0) + 1);

            if (r - l + 1 > target.length) {
                if (map.get(arr[l]) > 1) {
                    map.replace(arr[l], map.get(arr[l]) - 1);
                } else {
                    map.remove(arr[l]);
                }
                l++;
            }
            if (targetMap.equals(map)) {
                answer++;
            }
        }
        System.out.println(answer);
    }
}

참고한 자료