Algorithm/Java
[백준] 19941 햄버거 분배
례진
2024. 3. 11. 22:54
문제링크 : https://www.acmicpc.net/problem/19941
19941번: 햄버거 분배
기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사
www.acmicpc.net
import java.io.*;
import java.util.*;
public class BOJ19941 {
static int n, k, ans;
static String[] input;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
input = br.readLine().split("");
for (int i=0; i<n; i++){
if (input[i].equals("P")){
for (int j=i-k; j<=i+k; j++){
if (j<0 || j>=n) continue;
if (input[j].equals("H")){
input[j] = "A";
ans ++;
break;
}
}
}
}
System.out.println(ans);
}
}
해설 : 사람을 만날때마다 idx-k~idx+k의 범위를 탐색해 햄버거를 만나면 카운트해주고, 그 배열을 완전히 다른 문자열로 바꿔줌으로써 중복탐색이 되지않게 해주면된다.