๐Ÿงฉ Algorithm/[BOJ] Silver

BOJ 10709๋ฒˆ : ๊ธฐ์ƒ์บ์Šคํ„ฐ (Python/Silver 5)

devCloud 2023. 4. 17. 17:35
728x90
 

10709๋ฒˆ: ๊ธฐ์ƒ์บ์Šคํ„ฐ

์ถœ๋ ฅ์€ H ํ–‰์œผ๋กœ, ๊ฐ ํ–‰์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ W ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅ์˜ i ๋ฒˆ์งธ ํ–‰ j ๋ฒˆ์งธ ์ •์ˆ˜ (1 โ‰ฆ i โ‰ฆ H, 1 โ‰ฆ j โ‰ฆ W) ๋Š”, ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„ํ›„์— ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋œจ๋Š”์ง€๋ฅผ ํ‘œ์‹œ

www.acmicpc.net

๋ฌธ์ œ

JOI์‹œ๋Š” ๋‚จ๋ถ๋ฐฉํ–ฅ์ด H ํ‚ฌ๋กœ๋ฏธํ„ฐ, ๋™์„œ๋ฐฉํ–ฅ์ด W ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค. JOI์‹œ๋Š” ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ๋“ค๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค. ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i ๋ฒˆ์งธ, ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ j ๋ฒˆ์งธ์— ์žˆ๋Š” ๊ตฌ์—ญ์„ (i, j) ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์—๋Š” ๊ตฌ๋ฆ„์ด ์žˆ์„ ์ˆ˜๋„, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ๊ตฌ๋ฆ„์€ 1๋ถ„์ด ์ง€๋‚  ๋•Œ๋งˆ๋‹ค 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์”ฉ ๋™์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‚ ์”จ๊ฐ€ ์ •๋ง ์ข‹๊ธฐ ๋•Œ๋ฌธ์— JOI์‹œ์˜ ์™ธ๋ถ€์—์„œ ๊ตฌ๋ฆ„์ด ์ด๋™ํ•ด ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ง€๊ธˆ ๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ธฐ์ƒ์ฒญ์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ๋ถ„์€ ๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ์„ ๋งก์•˜๋‹ค. ๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ.

 

์ž…๋ ฅ

์ž…๋ ฅ์€ 1 + H ํ–‰์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ฒซ ๋ฒˆ์งธ ํ–‰์—๋Š” ์ •์ˆ˜ H, W (1 โ‰ฆ H โ‰ฆ 100, 1 โ‰ฆ W โ‰ฆ 100) ๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ์ฃผ๊ณ  ์ฃผ์–ด์ง„๋‹ค. ์ด๊ฒƒ์€ JOI์‹œ๊ฐ€ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด์–ด์ง„ H ๊ฐœ์˜ ํ–‰์˜ i๋ฒˆ์งธ ํ–‰ (1 โ‰ฆ i โ‰ฆ H) ์—๋Š” W๋ฌธ์ž์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. W ๊ฐœ์˜ ๋ฌธ์ž ์ค‘ j๋ฒˆ์งธ ๋ฌธ์ž (1 โ‰ฆ j โ‰ฆ W) ๋Š”, ๊ตฌ์—ญ (i, j) ์— ์ง€๊ธˆ ๊ตฌ๋ฆ„์ด ๋–  ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ตฌ๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜์–ด ์†Œ๋ฌธ์ž 'c' ๊ฐ€, ๊ตฌ๋ฆ„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž '.' ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ถœ๋ ฅ์€ H ํ–‰์œผ๋กœ, ๊ฐ ํ–‰์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ W ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ถœ๋ ฅ์˜ i ๋ฒˆ์งธ ํ–‰ j ๋ฒˆ์งธ ์ •์ˆ˜ (1 โ‰ฆ i โ‰ฆ H, 1 โ‰ฆ j โ‰ฆ W) ๋Š”, ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„ํ›„์— ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋œจ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ๋‹จ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋–  ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์—๋Š” 0์„, ๋ช‡ ๋ถ„์ด ์ง€๋‚˜๋„ ๊ตฌ๋ฆ„์ด ๋œจ์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ ์ž…๋ ฅ

6 8
.c......
........
.ccc..c.
....c...
..c.cc..
....c...

์˜ˆ์ œ ์ถœ๋ ฅ

-1 0 1 2 3 4 5 6
-1 -1 -1 -1 -1 -1 -1 -1
-1 0 0 0 1 2 0 1
-1 -1 -1 -1 0 1 2 3
-1 -1 0 1 0 0 1 2
-1 -1 -1 -1 0 1 2 3

Solution

import sys
input = sys.stdin.readline

h, w = map(int, input().split())
area = [list(map(str, input().rstrip())) for _ in range(h)] #์ž…๋ ฅ

for i in area:
    cnt = 0
    for j in i: 
        if j == 'c': #์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์—ญ์— ๊ตฌ๋ฆ„์ด ๋–  ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ
            cnt = 0 #๊ตฌ๋ฆ„์ด ์žˆ์œผ๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
            print(0, end = ' ') 
            cnt += 1 #๊ตฌ๋ฆ„์ด ์ง€๋‚˜๊ฐ„ ๊ตฌ์—ญ์„ ์นด์šดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด +1 
        elif j == '.' and cnt != 0: #๊ตฌ๋ฆ„์ด ๋œจ๋Š” ์‹œ๊ฐ„ 
            print(cnt, end = ' ')
            cnt += 1 #๊ตฌ๋ฆ„์ด ์—ฐ์†์œผ๋กœ ์ง€๋‚˜๊ฐˆ ๋•Œ ์นด์šดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด +1
        elif j == '.' and cnt == 0: #๋ช‡ ๋ถ„์ด ์ง€๋‚˜๋„ ๊ตฌ๋ฆ„์ด ๋œจ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
            print(-1, end = ' ')
    print(end = '\n')
728x90