코테/백준

[백준/JAVA] 19941번: 햄버거 분배

imname1am 2023. 8. 7. 12:16
반응형

🔺 문제

 

19941번: 햄버거 분배

기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
import java.io.*;
 
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 N = Integer.parseInt(st.nextToken());   // 식탁 길이
        int K = Integer.parseInt(st.nextToken());   // 햄버거 선택 가능 거리
        
        char[] cmd = br.readLine().toCharArray();
        boolean[] isUsed = new boolean[cmd.length];
        
        int cnt = 0;
        
        // [x - K, x + K]
        for(int i = 0 ; i < N ; i++) {
            if(cmd[i] == 'P') {
                for(int j = i - K ; j <= i + K ; j++) {
                    if(0 <= j && j < N && cmd[j] == 'H' && !isUsed[j]) {
                        isUsed[j] = true;
                        cnt++;
                        break;
                    }
                }
            }
        }
 
        System.out.println(cnt);
    }
}
cs
✅ 해결 아이디어
✔ 그리디
- 식탁의 현재 위치 i 에 사람이 있으면,
  인접한 [i - K, i + K] 구간에서 0이상 N 미만 범위를 벗어나지 않고,
  인접 위치에 있는 게 햄버거이고, 해당 햄버거를 먹을 수 있을 때
  햄버거를 먹을 수 있다고 판단한다.

 

💥 유의사항

• 인접한 부분의 범위가 0 이상 N 미만을 넘어가지 않는지 잘 따져주기 !

 

 


🔺 다른 풀이들

- 1. 구간 범위 설정 중, 0 범위를 벗어나는 값이면 0으로, N 이상인 값이면 N-1로 조정하는 과정이 포함되어 있다.

  2. 그리고 방문처리는 boolean 배열 사용하는 대신, 상관없는 다른 문자로 바꾸는 식으로 하셨다.

 

백준 19941번 : 햄버거 분배

일단 P를 먼저 찾고 P의 -K ~ +K 중에 H가 있는지 확인 * 만약 P가 맨 앞이나 맨 뒤에 위치해있다면 -K ~ +K 그대로 검색하면 없는 인덱스가 조회된다 따라서 start와 end변수를 선언해서 p의 인덱스 -K 했

lotuus.tistory.com

 


💬 느낀 점

처음에 19랑 20번째 줄 순서 바껴서 틀렸었다.

잘 생각해보고 하자,,!

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

✔ 문제 풀이 참고

 

19941번 : 햄버거 분배

문제 링크 : https://www.acmicpc.net/problem/19941 내가 문제를 해결한 방법 사람의 위치를 x라고 했을 ...

blog.naver.com

 

반응형