백준 10709번 기상캐스터

이상민·2023년 9월 21일
0

알고리즘

목록 보기
58/128
post-thumbnail
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Weather_Forecaster {
    public static void main(String[] args) throws IOException {
        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[][] answer = new int[H][W];
        for (int i = 0; i < H; i++) {
            String str = br.readLine();
            for (int j = 0; j < W; j++) {
                map[i][j] = str.charAt(j);
            }
        }
        for (int i = 0; i < H; i++) {
            for (int j = 0; j < W; j++) {
                if(map[i][j]=='.'){
                    answer[i][j]=-1;
                }
                else{
                    while (true){
                        int current = answer[i][j];
                        if(j==W-1)
                            break;
                        j++;
                        if(map[i][j]=='c'){
                            j--;
                            break;
                        }
                        answer[i][j]+=current+1;
                    }
                }
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < H; i++) {
            for (int j = 0; j < W; j++) {
                sb.append(answer[i][j]).append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
}

풀이방법

  1. 배열탐색시 분기를 "."을 만났을때, "c"를 만났을때로 나눈다.
  2. "c"를 만났을 경우 다음 c를 만날때까지 또는 행의 마지막까지 값을 1씩 증가 시켜준다.
  3. 다음 c를 만나거나 행의 마지막에는 탐색을 종료한다.
  4. stringBuilder를 통해 출력한다.

후기

어렵지 않게 풀었는데 그냥 출력문과 stringBuilder의 시간 차이가 많이 나서 가져와봤다.
출력해야할 일이 많을 경우에는 꼭 stringBuilder를 쓰는게 좋겠다.

  • 위에가 stringBuilder, 아래가 일반 출력문
profile
개린이

0개의 댓글