

-Code
import java.io.*;
import java.util.*;
class Main {
static class Ground {
int hight, waterAmount = 0;
boolean isRain = false;
public Ground(int hight) {
this.hight = hight;
}
public void clear() {
if (!this.isRain) return;
this.waterAmount--;
isRain = false;
}
public void rain() {
this.waterAmount++;
isRain = true;
}
public int totalHight() {
return this.hight + this.waterAmount;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// 짐 갯수, 장마 기간
int houseCnt = Integer.parseInt(st.nextToken());
int days = Integer.parseInt(st.nextToken());
// 땅 높이
st = new StringTokenizer(br.readLine());
Ground[] groundInfo = new Ground[houseCnt + 1];
for (int i = 1; i <= houseCnt; i++) {
groundInfo[i] = new Ground(Integer.parseInt(st.nextToken()));
}
// 비온날 받기
for (int day = 1; day <= days; day++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
for (int i = start; i <= end; i++) {
groundInfo[i].rain();
}
// 3의 배수 날 하수 시스템 작동
if (day % 3 == 0) {
// 3일 이내에 비온 위치 시스템 작동
for (int i = 1; i <= houseCnt; i++) {
groundInfo[i].clear();
}
}
}
// 각 지면 높이 구하기
StringBuilder answer = new StringBuilder();
for (int i = 1; i <= houseCnt; i++) {
answer.append(groundInfo[i].totalHight());
if (i < houseCnt) answer.append(" ");
}
System.out.println(answer);
br.close();
}
}
하면서 배열 크기를 잘못 지정하는 실수 및 하수 시스템 작동을 잘못 설계해서 틀렸었습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [goormlevel/Java] 흰색 칸의 체스말 개수 (0) | 2026.06.15 |
|---|---|
| [goormlevel/Java] 보드 게임 (0) | 2026.06.14 |
| [goormlevel/Java] RGB 주차장 (0) | 2026.06.12 |
| [goormlevel/Java] 어려운 문제 (0) | 2026.06.11 |
| [goormlevel/Java] 블록 게임 (0) | 2026.06.10 |