[백준] 10709번 기상캐스터 . python

sun1·2023년 3월 2일
0

im_test

목록 보기
6/22
post-thumbnail

문제

' 10709번 기상캐스터 '
https://www.acmicpc.net/problem/10709

힌트


풀이

조건

  • 정수 H, W (1 ≦ H ≦ 100, 1 ≦ W ≦ 100) 가 공백을 사이에 주고 주어진다.
  • 이어진 H 개의 행의 i번째 행 (1 ≦ i ≦ H) 에는 W문자의 문자열이 주어진다.
  • 구름이 있는 경우에는 영어 소문자 'c' 가, 구름이 없는 경우에는 문자 '.' 가 주어진다.
  • 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시한다. 단, 구름이 떠 있었던 경우에는 0을, 몇 분이 지나도 구름이 뜨지 않을 경우에는 -1을 출력한다.

풀이 순서

  • H, W, 하늘 상태를 입력값으로 받는다.
  • 출력을 위해 모두 구름이 뜨지 않았다고 가정하여 -1 배열을 W 길이 만큼 만들어준다.
  • 하늘 상태 배열을 한줄씩 순회하면서 지점에 구름이 있다면 출력 배열에 0처리를 해주고 그 이후에 하늘 지점은 tmp를 +1 해주면서 tmp값을 넣어준다.
  • 다음 구름을 만나면 0처리 해주고 tmp를 초기화 해준다.

코드

Python

H, W = map(int, input().split())
arr = [input() for _ in range(H)]

for a in arr:  # 한 줄씩 순회
    lst = [-1 for _ in range(W)]  # 모두 구름이 뜨지 않았다고 가정한 배열 만들기
    for i in range(W):
        if a[i] == 'c':  # 구름이 있으면
            lst[i] = 0  # 0처리
    tmp = 0
    for i in range(1, W):
        if lst[i] == 0: # 다음 구름에서 tmp 초기화
            tmp = 0
        if lst[i - 1] != -1:  # 그 전값이 -1이 아니고 0이 아니면 tmp값 넣어주기
            if lst[i] != 0:  # 다음 구름 있는 곳은 다시 reset 되므로
                tmp += 1
                lst[i] = tmp
    print(*lst)

0개의 댓글