๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋ชจ๋“  ์•„๋‚˜๊ทธ๋žจ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋ชจ๋“  ์•„๋‚˜๊ทธ๋žจ ์ฐพ๊ธฐ

์š”์ผ์ด 2021. 5. 20. 23:15
๋ฐ˜์‘ํ˜•

์„ค๋ช…

S๋ฌธ์ž์—ด์—์„œ T๋ฌธ์ž์—ด๊ณผ ์•„๋‚˜๊ทธ๋žจ์ด ๋˜๋Š” S์˜ ๋ถ€๋ถ„๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์•„๋‚˜๊ทธ๋žจ ํŒ๋ณ„์‹œ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„๋ฌธ์ž์—ด์€ ์—ฐ์†๋œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ

์ฒซ ์ค„์— ์ฒซ ๋ฒˆ์งธ S๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ค„์— T๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

S๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 10,000์„ ๋„˜์ง€ ์•Š์œผ๋ฉฐ, T๋ฌธ์ž์—ด์€ S๋ฌธ์ž์—ด๋ณด๋‹ค ๊ธธ์ด๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ

S๋‹จ์–ด์— T๋ฌธ์ž์—ด๊ณผ ์•„๋‚˜๊ทธ๋žจ์ด ๋˜๋Š” ๋ถ€๋ถ„๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ž…๋ ฅ ์˜ˆ์‹œ ์ถœ๋ ฅ
bacaAacba
abc
3

 

import java.util.*;
import java.io.*;

public class Main {
	
	public void solution(String S, String T) {
	
		HashMap<Character, Integer> count = new HashMap<>();
		HashMap<Character, Integer> countTmp = new HashMap<>();
		
		int result = 0;
		int lt = 0;
		int L = T.length()-1;
		
		for(char x : T.toCharArray()) {
			countTmp.put(x, countTmp.getOrDefault(x,0)+1);
		}
		for(int i=0; i<L; i++) {
			count.put(S.charAt(i), count.getOrDefault(S.charAt(i),0)+1);
		}
		for(int rt=L; rt<S.length(); rt++) {
			count.put(S.charAt(rt), count.getOrDefault(S.charAt(rt),0)+1);
			
			if(count.equals(countTmp)) {
				result ++;
			}
			count.put(S.charAt(lt), count.get(S.charAt(lt))-1);
			if(count.get(S.charAt(lt)) == 0) {
				count.remove(S.charAt(lt));
			}
			lt++;
			
		}
		
		System.out.println(result);
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        
		String S = in.nextLine();
		String T = in.nextLine();
		
        main.solution(S, T);
    }

}
Comments