문제요약
나의 코드 및 설명
h, w = map(int, input().split())
area = []
for i in range(h):
area.append(list(input()))
#구름 예보
result = [[0] * w for _ in range(h)]
cloud = 0 #구름 수
for i in range(h):
cloud = 0 #구름 수 / 행이 바뀔때마다 0으로 초기화
for j in range(w):
#i,j에 현재 구름이 떠있다면
if area[i][j] == "c":
result[i][j] = 0 #구름 예보 정보 값에 0 저장
cloud += 1 #i행에 구름개수가 하나 있다는 것을 알려줌
x = j #x는 현재 i행의 구름이 j번째에 있다는 것을 알려줌
else: #구름이 없는 열에서..
if cloud < 1: #만약 이전 열에서 카운트한 구름의 개수가 0 이라면
#수 분이 지나도 구름이 올 확률이 없으므로 -1 저장
result[i][j] = -1
else: #구름이 있다면,
#현재 열에서 구름이 있는 열을 빼준다.
result[i][j] = j-x
for i in range(h):
for j in range(w):
print(result[i][j], end = " ")
print()
다른 코드 및 설명
- 구름이 지나가는 것을 나처럼 숫자로 세지 않고, True/False로 표현한 코드다.
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):
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()
피드백
특정 행의 이전 열에서 구름이 있나 없나 체크를 어떻게 할까 고민하다가 cloud 변수를 통해 구름의 개수를 카운트 하고, 구름이 없는 열에서 cloud 변수에 저장된 구름의 개수를 확인하여 저장된 구름의 개수가 0이라면 이전 열에 구름이 없는 것이므로 몇 분후에 구름이 생기는지 체크할 수 있도록 코드를 작성하였고, 맞았다.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 13300 방 배정 (브론즈2) / 딕셔너리 (0) | 2023.03.18 |
---|---|
[백준] 2999 비밀 이메일 (브론즈1) (0) | 2023.03.17 |
[백준] 3085 사탕 게임 (실버2) (0) | 2023.03.15 |
[백준] 2559 수열 (실버3) / 시간초과 해결 (0) | 2023.03.15 |
[백준] 11399 ATM (실버4) (0) | 2023.03.15 |