~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/12891
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๊ตฌ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐ
- ๋จ์ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋งค๋ฒ ๋ฌธ์์ด์ ํน์ ๊ตฌ๊ฐ ๋ฐ์ํ ๋ฌธ์ ๊ฐ์๋ฅผ ์ธ๋ฉด ์๊ฐ ์ด๊ณผ ๋ฐ์
- P ๊ธธ์ด๋งํผ ๊ฐ ๋ฌธ์์ ๋ฐ์ ํ์๋ฅผ ์นด์ดํธ ํ์ฌ ์ ์ฅํ๋ค
- 0๋ถํฐ N-P๊น์ง ํ์นธ์ฉ ์ด๋ํ๋ฉด์ ํด๋น ๊ตฌ๊ฐ ์ ๋ฌธ์์ด์ ์ ๊ฑฐ, ๊ฐ์ฅ ๋ค ๋ฌธ์์ด ํ์นธ ๋ค ๋ฌธ์์ด์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ฐ๋ณต
- ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋น๋ฐ๋ฒํธ ๋ฐ๊ฒฌ์ answer ๋ณ์ ++
์์ฑ ์ฝ๋
import java.util.*;
import java.io.*;
// mem : 22352KB
// time : 228ms
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int answer=0;
int N = Integer.parseInt(st.nextToken());
int P = Integer.parseInt(st.nextToken());
char[] dna = br.readLine().toCharArray(); //๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํ
st = new StringTokenizer(br.readLine());
int[] check = new int[4]; // ๊ฐ ๋ฌธ์๊ฐ ๋ช๊ฐ ์ด์ ๋ฐ๊ฒฌ ๋ผ์ผํ๋์ง ์ ์ฅ ๋ฐฐ์ด
for (int i = 0; i < 4; i++) {
check[i] = Integer.parseInt(st.nextToken());
}
// ์ฒซ ์์ ๋น๋ฐ๋ฒํธ ์ํ๋ฒณ ์นด์ดํธ
int[] countAlph = new int[4];
for (int j = 0; j < P; j++) {
switch (dna[j]) {
case 'A': countAlph[0]++; break;
case 'C': countAlph[1]++; break;
case 'G': countAlph[2]++; break;
case 'T': countAlph[3]++; break;
}
}
// ๋น๋ฐ๋ฒํธ ํ๋ณด
for (int i = 0; i <= N-P; i++) {
boolean flag = false;
// ์กฐ๊ฑด์ ๋ถํฉํ๋์ง ํ์ธ
for(int j=0; j<4; j++) {
if(countAlph[j] < check[j]) {
flag = true;
break;
}
}
if (!flag) // ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋ฐ๋ฒํธ
answer++;
if(i==N-P) break;
countAlph[position(dna[i])]--; //๋งจ ์ ๋ฌธ์ ์ ๊ฑฐ
countAlph[position(dna[i+P])]++; //๋ค ๋ฌธ์ ์ถ๊ฐ
}
System.out.println(answer);
}
// ๊ฐ ๋ฌธ์์ ์์น๋ฅผ ํ์ธ
private static int position(char alph) {
switch(alph) {
case 'A' : return 0;
case 'C' : return 1;
case 'G' : return 2;
case 'T' : return 3;
}
return -1;
}
}
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
REFERENCE
https://ji-musclecode.tistory.com/37
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋ฐฑ์ค 16926 ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 | ๊ตฌํ (0) | 2023.08.09 |
---|---|
[JAVA] ๋ฐฑ์ค 2493 ํ | Stack (0) | 2023.08.08 |
[JAVA] ๋ฐฑ์ค 2961 ๋์์ด๊ฐ ๋ง๋ ๋ง์๋ ์์ (0) | 2023.08.04 |
[Python] ๋ฐฑ์ค 1654 ๋์ ์๋ฅด๊ธฐ | ์ด์ง ํ์ | ์๊ฐ ์ด๊ณผ (0) | 2023.07.08 |
[Python] ๋ฐฑ์ค 9655 ๋ ๊ฒ์ | DP (0) | 2023.06.18 |