728x90
1. 문제
2. 풀이
N 최대가 2만, K 최대가 10이라 N*K = 20만 번 탐색하면 된다.
1. 하나씩 탐색하되, 사람이 아니면 넘긴다.
2. i번 사람 기준으로 i-K부터 i+K까지 전부 탐색하면서 햄버거가 있다면 answer+1하고 그 자리의 햄버거를 _로 바꿔서 다먹었다는 표시를 한다. 햄버거 하나를 먹었다면 i번 사람 탐색을 마친다.
3. 답을 출력한다.
import java.io.*;
import java.util.*;
public class BOJ_19941_햄버거분배 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
char[] input = in.readLine().toCharArray();
int answer = 0;
for(int i=0;i<N;i++){
if(input[i]!='P') continue;
for(int j=Math.max(i-K,0);j<=Math.min(i+K,N-1);j++){
if(input[j]!='H') continue;
input[j] = '_';
answer++;
break;
}
}
System.out.println(answer);
}
}
3. 결과
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 2252 줄 세우기 - JAVA (0) | 2023.07.28 |
---|---|
[BOJ] 2623 음악프로그램 - JAVA (0) | 2023.07.27 |
[BOJ] 14003 가장 긴 증가하는 부분 수열 5 - JAVA (0) | 2023.07.25 |
[BOJ] 2166 다각형의 면적 - JAVA (0) | 2023.07.24 |
[BOJ] 1208 부분수열의 합 2 - JAVA (0) | 2023.07.23 |
댓글