-
백준 파이썬 10709 : 기상캐스터 풀이기타/알고리즘 2020. 11. 30. 23:59반응형
다차원리스트를 만들어 예제 값을 입력받고, 구름이 지나가는지 아닌지, 언제 지나가는지를 숫자로 표현하여 출력해야 하는 문제다.
나는 도시의 지도를 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