Tags
- DP
- ๊ทธ๋ํ ์ด๋ก
- ๋๋น ์ฐ์ ํ์
- BFS
- ์ ๋ ฌ
- ์๋ฃ๊ตฌ์กฐ
- Python
- PGM
- dfs
- greedy
- stack
- ๊ทธ๋ํ ํ์
- ์๋ฎฌ๋ ์ด์
- queue
- ๊ต์ฌ
- ๊น์ด ์ฐ์ ํ์
- Study
- ๋ฌธ์์ด
- Java
- ๋ฐฑํธ๋ํน
- LV2
- ์ํ
- Brute Force Algorithm
- SpringBoot
- sort
- Dynamic Programming
- ๊ตฌํ
- CodingTest
- BOJ
- ์ ์๋ก
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_12891 : DNA ๋น๋ฐ๋ฒํธ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ ๋ ฅ๋ ๋ฌธ์์ด S์์ P ๊ธธ์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ง๋ค์์๋, ์ ๋ ฅ๋ DNA ๋ฌธ์์ด ์ต์ ๊ฐ์๋ฅผ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ P๊ธธ์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฌธ์์ด S์ ์์์ ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด๊ฐ๋ค.
- ์๋์ฐ์์ ๋ฒ์ด๋๋ ์ธ๋ฑ์ค๋ ํ์ฌ ์ํ์์ ๋นผ๊ธฐ
- ์๋์ฐ์ ์๋ก ๋ค์ด์ค๋ ์ธ๋ฑ์ค๋ ํ์ฌ ์ํ ์ ๋ํ๊ธฐ
- ์กฐ๊ฑด์ ์ถฉ์กฑ ํ๋์ง ํ์ธํด์ ์นด์ดํธ
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int arr[], now[];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int s = Integer.parseInt(st.nextToken());
int p = Integer.parseInt(st.nextToken());
String dna = br.readLine();
arr = new int[4];
now = new int[4];
// ์ฒดํฌ ๋ฐฐ์ด ์
๋ ฅ ๋ฐ๊ธฐ
st= new StringTokenizer(br.readLine());
for (int i = 0; i < 4; i++)
arr[i] = Integer.parseInt(st.nextToken());
// ํ์ฌ ์ํ ๋ฐฐ์ด๊ณผ ์ด๊ธฐํ
for (int i = 0; i < p; i++){ now[idx(dna.charAt(i))]++; }
int answer = check() ? 1:0;
// ์๋์ฐ ์ด๋
for (int i = 1; i <= s - p; i++){
now[idx(dna.charAt(i-1))]--;
now[idx(dna.charAt(i+p-1))]++;
if (check())
answer++;
}
System.out.println(answer);
}
// ๋ฌธ์์ DNA ์ธ๋ฑ์ค ์์น
private static int idx(char c){
if (c == 'A')
return 0;
else if (c == 'C') {
return 1;
}
else if (c == 'G') {
return 2;
}
else if (c == 'T') {
return 3;
}
return 0;
}
// ์ฒดํฌ ๋ฐฐ์ด๊ณผ ํ์ฌ ์ํ ๋ฐฐ์ด ๋น๊ต
private static boolean check(){
boolean flag = true;
for (int i = 0; i < 4; i++){
if (now[i] < arr[i]){
flag = false;
break;
}
}
return flag;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ฉ์๋์์ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ํ ๋ฐฐ์ด arr์ ํ์ฌ ์ํ ๋ฐฐ์ด now๋ฅผ ์ ์ ๋ณ์๋ก ์ ์ธํด๋๋ค.
- ๋ฉ์๋ idx()์์ ๋ฌธ์๊ฐ ๋ฐฐ์ดarr์ ๋ช ๋ฒ์ฌ ์ธ๋ฑ์ค์ธ์ง ๋ฐํํ๋ค.
- ๋ฉ์๋ check() ์์ ๋ฐฐ์ด arr์ now๊ฐ ๊ฐ์์ง ๋น๊ตํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- main() ๋ฉ์๋์์ ๋ฌธ์ ์กฐ๊ฑด์ ์ ๋ ฅ์ ๋ฐ๊ณ , ์๋์ฐ๋ฅผ ์ด๋ํ๋ฉฐ ์กฐ๊ฑด์ ๋ถํฉํ ๊ฒฝ์ฐ๋ฅผ ์นด์ดํธํ๋ค.
๐ธ end ๐ธ
- ๊ต์ฌ ๊ณต๋ถ๋ก ์ ํ ๋ฌธ์ ์ธ๋ฐ, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1874 : ์คํ ์์ด (0) | 2022.11.07 |
---|---|
BOJ_11003 : ์ต์๊ฐ ์ฐพ๊ธฐ (0) | 2022.11.03 |
BOJ_1120 : ๋ฌธ์์ด (0) | 2022.11.02 |
BOJ_1064 : ํํ์ฌ๋ณํ (0) | 2022.11.01 |
BOJ_1059 : ์ข์ ๊ตฌ๊ฐ (0) | 2022.10.30 |