๐ ๋ฐฑ์ค 10709 - ๊ธฐ์์บ์คํฐ
๋ฐฑ์ค 10709 - ๊ธฐ์์บ์คํฐ
โก๏ธ ๋์ ํ์ด
์๋ฎฌ๋ ์ด์
๋ฌธ์ ์๋๋ฐ, ๊ตฌ๋ฆ์ด ์์ง์ผ๋์ ๋ก์ง์ ์ด๋ป๊ฒ ์ง๋๋๊ฐ ์ค์ํ ๋ฌธ์ ์๋ค. ๋ด๊ฐ ์์ฑํ ์ฝ๋๋ ๋ค๋ฅธ ์ฝ๋์ ๋นํด ๊ธธ์ด๋ ๋ง์๊ณ , ์คํ์๊ฐ๋ 100m/s
์ ๋ ์ฐจ์ด๊ฐ ๋ฌ๋ค. ๋ค์๋ณด๋๊น ๋ฐ๋ณต๋ฌธ์ ๋ง์ด ์ฌ์ฉํด์ ๊ทธ๋ฐ๊ฒ ๊ฐ๋ค.
๋์ ํ์ด๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์
๋ ฅ์ ๊ตฌ๋ฆ์ด ์๋์ง ์๋์ง๋ฅผ ํ๋จํ์ฌ
boolean
๊ฐ์ ๋ฆฌํดํ๋ค. - ๊ตฌ๋ฆ์ด ํ๊ฐ๋ผ๋ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํ์ฌ
sky
์ขํ๊ฐc
์ด๊ณ ๋ค์ ์นธ์ ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉดcnt
๋ฅผ ํ๋์ฉ ์ฆ๊ฐ์ํจ๋ค. (์ข ๋ฃ์กฐ๊ฑด:cnt
๊ฐW
๋ณด๋ค ์ปค์ง ๋)
๋ค๋ฅธ์ฌ๋์ ํ์ด์์๋ ์
๋ ฅ์ ๊ฐ row
๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์๋๋ฐ, ์๊ฐํด๋ณด๋ฉด ๋ฌธ์ ์์ ์ด
๋ผ๋ฆฌ๋ ๊ณ ๋ คํ์ง ์๊ณ ํ
์ ๊ธฐ์ค์ผ๋ก๋ง ํ๊ธฐ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ์ฌ์ฉ ํ ์ ์๋๊ฒ ๊ฐ๋ค.
- ๊ฐ
row
๋ฅผ ๊ธฐ์ค์ผ๋กcnt
์cloud
๋ฅผ ์ด๊ธฐํ ์ํจ๋ค. - ํ์ฌ ์ขํ๊ฐ
.
์ธ๋ฐnot cloud
๋ฉด-1
์ ๋ฃ๋๋ค. (์ด์ ๊น์ง ๊ตฌ๋ฆ์ด ์์ผ๋ฏ๋ก) - ํ์ฌ ์ขํ๊ฐ
c
๋ฉด0
์ ๋ฃ๋๋ค. (๊ตฌ๋ฆ์ด ํ์ฌ ๋ ์๋ ์ํ์ด๋ฏ๋ก) - ํ์ฌ ์ขํ๊ฐ
.
์ธ๋ฐcloud
๋ฉด ์ด์ ๊น์ง ๋์ ํcnt
๋ฅผ ๋ฃ๋๋ค. (๊ตฌ๋ฆ์ดcnt
๋ถ ๋ค์ ์ค๊ธฐ ๋๋ฌธ์)
์ฃผ์ ํ ์ ์ ๋ค์ ์ฌ์ง์ฒ๋ผ ์ด์ ์ ๋ค๋ฅธ ๊ตฌ๋ฆ์ด ์๋๋ผ๋ ํ์ฌ ์ขํ๊ธฐ์ค์ผ๋ก ์ ์ผ ๊ฐ๊น์ด ๊ตฌ๋ฆ๋ง ์ ๊ฒฝ์จ์ผํ๋ค. ์๋ํ๋ฉด ์ ์ผ ์ฒ์์ผ๋ก ํ๋์ ๊ตฌ๋ฆ์ด ๋์ฐฉํ๋ ์๊ฐ์ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.(๋ฌธ์ ์ฐธ๊ณ ) ๋ฐ๋ผ์ ๋๋ฒ์งธ ์ฝ๋ 15
๋ฒ ๋ผ์ธ์์ cnt
๋ฅผ ๋ค์ 1
๋ก ์ด๊ธฐํ ์์ผ์ผํ๋ค. (์ด ๋ถ๋ถ์์ ์กฐ๊ธ ๋งํ๋ค.)
# ๋์ ์ฝ๋
H, W = map(int, input().split())
sky = [input() for _ in range(H)]
result_sky = [[-1] * W for _ in range(H)]
visited = [[False] * W for _ in range(H)]
cnt = 1
def check_cloud(): # ๊ตฌ๋ฆ์ด ์๋์ง ์๋์ง ํ๋จํ๋ ํจ์
for i in sky:
if 'c' in i:
return True
return False
def print_arr(arr): # arr์ ์ถ๋ ฅํ๋ ํจ์
for i in arr:
print(*i, end=' ')
print()
def visited_cloud(): # ๊ตฌ๋ฆ์ ์ด๊ธฐ๊ฐ์ visitedํ๋ ํจ์
for i in range(H):
for j in range(W):
if sky[i][j] == 'c':
visited[i][j] = True
result_sky[i][j] = 0
if not check_cloud(): # ๊ตฌ๋ฆ์ด ํ๋๋ ์๋ ๊ฒฝ์ฐ
print_arr(result_sky)
else: # ๊ตฌ๋ฆ์ด ํ๋๋ผ๋ ์๋ ๊ฒฝ์ฐ
visited_cloud()
while cnt < W: # ๊ตฌ๋ฆ์ด ์์ง์ด๋ ์ต๋ ํ์๋ W
temp_arr = [[-1] * W for _ in range(H)]
for i in range(H):
for j in range(W-1):
if sky[i][j] == 'c' and not visited[i][j+1]:
temp_arr[i][j+1] = 'c'
result_sky[i][j+1] = cnt
sky = temp_arr
cnt += 1
print_arr(result_sky)
# ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋
H, W = map(int, input().split())
sky = [input() for _ in range(H)]
answer = [[0] * W for _ in range(H)]
for i in range(H):
cnt = 1
cloud = False
for j in range(W):
if not cloud and sky[i][j] == '.':
answer[i][j] = -1
elif sky[i][j] == 'c':
cloud = True
answer[i][j] = 0
cnt = 1
elif cloud and sky[i][j] == '.':
answer[i][j] = cnt
cnt += 1
for i in answer:
print(*i, end=' ')
print()
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript), Node.js ] ๋ฐฑ์ค 2525 - ์ค๋ธ ์๊ณ (0) | 2021.08.06 |
---|---|
[ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript), Node.js ] ๋ฐฑ์ค 1075 - ๋๋๊ธฐ (0) | 2021.08.04 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 10813 - ๊ณต ๋ฐ๊พธ๊ธฐ (0) | 2021.07.19 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 10804 - ์นด๋ ์ญ๋ฐฐ์น (0) | 2021.07.18 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 18110 - solved.ac (0) | 2021.07.13 |
๋๊ธ