[알고리즘] 백준 10709

dlwl98·2022년 5월 21일
0

알고리즘공부

목록 보기
13/34
post-thumbnail

백준 10709번 기상캐스터

해결 과정 요약

도시의 기상상태를 저장할 2차원배열 a와 기상예측을 저장할 2차원배열 ret를 선언하고
입력을 a에 저장한 뒤 a를 탐색하면서 해당요소의 좌측에 구름이 있는지를 확인한다.
인덱스를 줄여가며 탐색하다가 범위를 초과하면 ret배열에 -1을 저장하고 break한다.
범위 내에서 구름을 찾으면 요소와 구름의 거리를 ret에 저장하고 break한다.

풀이

#include <bits/stdc++.h>
using namespace std;

int H,W;
char a[104][104];
int ret[104][104];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    cin >> H >> W;
    for(int i=0; i<H; i++){
        for(int j=0; j<W; j++){
            cin >> a[i][j];
        }
    }
    for(int i=0; i<H; i++){
        for(int j=0; j<W; j++){
            int idx = j;
            while(true){
                if(idx < 0) { ret[i][j] = -1; break; }
                if(a[i][idx] == 'c') { ret[i][j] = j-idx; break; }
                idx--;
            }
        }
    }
    for(int i=0; i<H; i++){
        for(int j=0; j<W; j++){
            cout << ret[i][j] << " ";
        }
        cout << "\n";
    }
    return 0;
}

코멘트

이런 문제들이 나오면 원본배열을 최대한 유지시켜서 문제를 풀려고 노력중이다.
이유는 바꾼 원본배열을 다시 탐색하거나 값을 읽으면서 생길 수 있는 여러가지 실수와 오류를 방지하기 위해서.

0개의 댓글