-
백준 파이썬 10709 : 기상캐스터 풀이기타/알고리즘 2020. 11. 30. 23:59반응형
10709번: 기상캐스터
출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시
www.acmicpc.net
다차원리스트를 만들어 예제 값을 입력받고, 구름이 지나가는지 아닌지, 언제 지나가는지를 숫자로 표현하여 출력해야 하는 문제다.
나는 도시의 지도를 city, 출력할 리스트를 answer로 설정했다.
여기서 경우의 수는 크게 세 가지가 있다.
1. 구름이 아예 없는 열인 경우. -1인 경우.
2. 구름이 있는 칸인 경우. 0인 경우.
3. 구름이 곧 지나갈 칸인 경우. 1, 2, 3, ...인 경우.
이때 3가지 경우의 수를 나누는 가장 결정적인 요소는 j에 c가 있냐 없냐이다. 따라서 cloud=False로 초기값을 잡아준다.
정리하면,
1. cloud == False 인 경우
2. city[i][j] =='c'인 경우
3. cloud==True이고 city[i][j]=='.'인 경우
라고 생각할 수 있다. 3의 경우 값이 누적되며 증가하기 때문에 num=1로 두고 반복될 때마다 num의 값이 1씩 증가하는 것으로 해두었다.
h,w = map(int,input().split()) city = [] answer = [[0]* w for i in range(h)] cloud = False for _ in range(h): city.append(list(map(str,input()))) for i in range(h): for j in range(w): if cloud==False and city[i][j] =='.': answer[i][j] = -1 elif city[i][j] =='c': cloud= True answer[i][j] = 0 num = 1 elif cloud == True and city[i][j] =='.': answer[i][j] = num num += 1 cloud = False num = 1 for i in range(h): for j in range(w): print(answer[i][j],end=' ') print()
반응형'기타 > 알고리즘' 카테고리의 다른 글
[백준 파이썬 1966번 : 프린터 큐] 큐를 이용한 풀이 (0) 2020.12.05 백준 파이썬 10828번 : 스택 시간초과 해결 (0) 2020.12.03 백준 파이썬 2428번 : 표절 이진탐색 풀이 (0) 2020.12.03 백준 파이썬 11947번 : 이런 반전이 풀이 (0) 2020.12.02 백준 파이썬 5800번 : 성적 통계 풀이 (0) 2020.12.01