[백준] 햄버거 분배 19941 java

오늘내일·2024년 6월 9일
0

최적의 풀이는 아니지만 문제 접근하는 방법이 참고가 될 수 있지 않을까해서 올려봅니다. 코드에 주석 참고해주세요.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
  // 사람들은 자신의 위치에서 거라가 K 이하인 햄버거 먹을 수 있음
  // 햄버거를 먹을 수 있는 사람의 최대 수 --> 여러 경우 중 최대인 경우 : 그리디?
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int n = Integer.parseInt(st.nextToken());
    int k = Integer.parseInt(st.nextToken());

    char[] board = br.readLine().toCharArray();
    // 왼쪽의 가장 먼 것부터 오른쪽 가장 먼 것까지 먹을 수 있는게 있는지 보고 먹는다
    // 제일 왼쪽에 있는 것부터 먹어야 다음 사람이 먹을 확률이 높아지기 때문에 왼쪽의 가장 먼 것부터 오른쪽 가장 먼 것까지 탐색
    int count = 0;
    for (int i = 0; i < n; i++) {
      if (board[i] == 'P') {
        for (int j = i - k; j <= i + k; j++) {
          if (j < 0 || j >= n) {
            continue;
          }

          if (board[j] == 'H') {
            count++;
            board[j] = 'X';
            break;
          }
        }
      }
    }

    System.out.println(count);
  }
}
profile
다시 시작합니다.

0개의 댓글