📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
https://www.acmicpc.net/problem/19941
package greedy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Greedy19941 {
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());
int cnt = 0;
String line = br.readLine();
char[] arr = line.toCharArray();
for (int i = 0; i < N; i++) {
if (arr[i] == 'P') {
int startIndex = Math.max(i - K, 0);
int endIndex = Math.min(i + K, N-1);
for (int j = startIndex; j <= endIndex; j++) {
if (arr[j] == 'H') {
cnt++;
arr[j] = 'X';
break;
}
}
}
}
System.out.println(cnt);
}
}
문제는 엄청 간단했다. 그냥 이중 for문돌려서 하면 되는건데 뭔가 시간초과가 뜰거 같애서 계속 효율적으로 설계하다가 망해버려서 맨 처음 코드로 냈더니 성공..... 내 시간 돌려내!!!
이 문제의 핵심은 startIndex와 endIndex 이다. 이를 잘 이용해서 P가 뒤 또는 앞으로 햄버거를 먹을 수 있게 해야된다.
[백준 19637번] IF문 좀 대신 써줘 (0) | 2024.12.19 |
---|---|
[백준 17484번] 진우의 달 여행 (Small) (1) | 2024.12.16 |
[백준 2607번] 비슷한 단어 (0) | 2024.12.13 |
[백준 2512번] 예산 (1) | 2024.12.12 |
[백준] 영단어 암기는 괴로워 20920번 (🥈 실버3) (0) | 2024.09.15 |