10709번: 기상캐스터
출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시
www.acmicpc.net
📒 문제
JOI시는 남북방향이 H 킬로미터, 동서방향이 W 킬로미터인 직사각형 모양이다. JOI시는 가로와 세로의 길이가 1킬로미터인 H × W 개의 작은 구역들로 나뉘어 있다. 북쪽으로부터 i 번째, 서쪽으로부터 j 번째에 있는 구역을 (i, j) 로 표시한다.
각 구역의 하늘에는 구름이 있을 수도, 없을 수도 있다. 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽으로 이동한다. 오늘은 날씨가 정말 좋기 때문에 JOI시의 외부에서 구름이 이동해 오는 경우는 없다.
지금 각 구역의 하늘에 구름이 있는지 없는지를 알고 있다. 기상청에서 일하고 있는 여러분은 각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 예측하는 일을 맡았다.
각 구역에 대해서 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지를 구하여라.
📒 문제해설
단순한 시뮬레이션으로 해결하였다. 값이 'c'인구간은 같은 크기의 int배열에 0으로 넣고 '.'인구간은 -1을 넣어 초기화하고 3중 for문을 돌려 크기를 증가시켜나가며 해결했다.
📒 소스코드
package BOJ.Simulation;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj10709_기상캐스터 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
char[][] map = new char[H][W];
int[][] result = new int[H][W];
String[] input = new String[H];
for (int i = 0; i < H; i++) {
input[i] = br.readLine();
for (int j = 0; j < W; j++) {
map[i][j] = input[i].charAt(j);
if (map[i][j] == '.') {
result[i][j] = -1;
}
if (map[i][j] == 'c') {
result[i][j] = 0;
}
}
}
int cloud = 0;
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
if (result[i][j] == 0) {
for (int k = j + 1; k < W; k++) {
if (result[i][k] == 0) {
cloud = 0;
break;
} else {
cloud += 1;
result[i][k] = cloud;
}
}
}
}
cloud = 0;
}
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
}
📒 리뷰

어려운 문제는 아니었기 때문에 바로 해결했던 것 같다. 소요시간은 25분 정도!
오늘 풀어야 했던 문제가 너무 어려워서 단순 해결 문제를 풀고 다시 풀어보려고 풀었던 문제였다🌛🌛
'Algorithm' 카테고리의 다른 글
[BOJ/백준][JAVA] 2056 - 작업 (0) | 2021.12.28 |
---|---|
[BOJ/백준][JAVA] 15658 - 연산자 끼워넣기(2) (0) | 2021.12.27 |
[백준/BOJ][JAVA] 1504 - 특정한 최단경로 (0) | 2021.12.20 |
[백준/BOJ][JAVA] 1931 - 회의실 배정 (0) | 2021.12.17 |
[백준/BOJ][JAVA] 1018 - 체스판 다시 칠하기 (0) | 2021.12.15 |