ffinn92 / Keep-at-solve-it

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

[220709][반스][인프런](4-4) 모든 아나그램 찾기 #89

Closed ffinn92 closed 2 years ago

ffinn92 commented 2 years ago

📌 문제

⭐️ 아이디어

🤔 고민한 내용

💪 새롭게 배운 내용

🆘 이해가 어려운 내용

❌ 해결하지 못한 이유

✅ 본인 풀이

🏋️‍♀️ 시도횟수 : 1회 | ⏱ 걸린시간 : 129ms | 💾 메모리 : 26MB

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public int solution(String s, String t) {
        int count = 0;
        int p1 = 0;
        HashMap<Character, Integer> sString = new HashMap<>();
        HashMap<Character, Integer> tString = new HashMap<>();

        for (int i = 0; i < t.length(); i++) {
            tString.put(t.charAt(i), tString.getOrDefault(t.charAt(i), 0) + 1);
        }

        for (int i = 0; i < t.length() - 1; i++) {
            sString.put(s.charAt(i), sString.getOrDefault(s.charAt(i), 0) + 1);
        }

        for (int p2 = t.length() - 1; p2 < s.length(); p2++) {
            sString.put(s.charAt(p2), sString.getOrDefault(s.charAt(p2), 0) + 1);
            if (tString.equals(sString)) {
                count++;
            }
            sString.put(s.charAt(p1), sString.get(s.charAt(p1)) - 1);
            if (sString.get(s.charAt(p1)) == 0) {
                sString.remove(s.charAt(p1));
            }
            p1++;
        }
        return count;
    }

    public static void main(String[] args) throws IOException {
        Main T = new Main();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine();
        String t = br.readLine();

        int result = T.solution(s, t);
        System.out.println(result);
    }
}

참고한 자료