ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 16956 ๋Š‘๋Œ€์™€ ์–‘ with Python
    PS 2022. 7. 2. 01:20
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 16956 ๋Š‘๋Œ€์™€ ์–‘

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ํฌ๊ธฐ๊ฐ€ Rร—C์ธ ๋ชฉ์žฅ์ด ์žˆ๊ณ , ๋ชฉ์žฅ์€ 1ร—1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค.
    1. ๊ฐ๊ฐ์˜ ์นธ์—๋Š” ๋น„์–ด์žˆ๊ฑฐ๋‚˜, ์–‘ ๋˜๋Š” ๋Š‘๋Œ€๊ฐ€ ์žˆ๋‹ค. ์–‘์€ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ์œ„์น˜๋ฅผ ์ง€ํ‚ค๊ณ  ์žˆ๊ณ , ๋Š‘๋Œ€๋Š” ์ธ์ ‘ํ•œ ์นธ์„ ์ž์œ ๋กญ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
      ๋‘ ์นธ์ด ์ธ์ ‘ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋‘ ์นธ์ด ๋ณ€์„ ๊ณต์œ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
    1. ๋ชฉ์žฅ์— ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด ๋Š‘๋Œ€๊ฐ€ ์–‘์ด ์žˆ๋Š” ์นธ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์—†๊ฒŒ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
      ๋Š‘๋Œ€๋Š” ์šธํƒ€๋ฆฌ๊ฐ€ ์žˆ๋Š” ์นธ์œผ๋กœ๋Š” ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค. ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด๋ณด์ž.
    1. ๋ชฉ์žฅ์˜ ํฌ๊ธฐ R, C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
      R๊ฐœ์˜ ์ค„์— ๋ชฉ์žฅ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. '.'๋Š” ๋นˆ ์นธ, 'S'๋Š” ์–‘, 'W'๋Š” ๋Š‘๋Œ€์ด๋‹ค.
      1 โ‰ค R, C โ‰ค 500
    1. ๋Š‘๋Œ€๊ฐ€ ์–‘์ด ์žˆ๋Š” ์นธ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์—†๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฒซ์งธ ์ค„์— 1์„ ์ถœ๋ ฅํ•˜๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ R๊ฐœ์˜ ์ค„์— ๋ชฉ์žฅ์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
      ์šธํƒ€๋ฆฌ๋Š” 'D'๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์šธํƒ€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•ด๋„ ๋Š‘๋Œ€๊ฐ€ ์–‘์ด ์žˆ๋Š” ์นธ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฒซ์งธ ์ค„์— 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
      ์ด ๋ฌธ์ œ๋Š” ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์šธํƒ€๋ฆฌ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค.
    1. ์• ๋“œ ํ˜น, ๊ตฌ์„ฑ์ , ๊ทธ๋ž˜ํ”„ ์ด๋ก  ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from collections import deque
    from sys import stdin
    
    r, c = map(int, stdin.readline().split())
    board = []
    wolf = []
    dx, dy = [1, 0, 0, -1], [0, 1, -1, 0]
    for i in range(r):
        data = list(stdin.readline().rstrip().replace('.', 'D'))
        board.append(data)
        for j in range(c):
            if data[j] == 'W':
                wolf.append((i, j))
    
    
    def bfs(x, y):
        q = deque()
        q.append((x, y))
        visited = set()
        visited.add((x, y))
    
        while q:
            x, y = q.popleft()
            for i in range(4):
                nx, ny = x + dx[i], y + dy[i]
                if 0 <= nx < r and 0 <= ny < c:
                    if (nx, ny) not in visited and board[nx][ny] != 'D' and board[nx][ny] != 'W':
                        if board[nx][ny] == 'S':
                            return False
                        else:
                            visited.add((nx, ny))
                            q.append((nx, ny))
    
        return True
    
    
    for x, y in wolf:
        if not bfs(x, y):
            print(0)
            exit()
    
    print(1)
    for i in board:
        print(*i, sep='')

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ 1

    5 5
    .S...
    ...S.
    S....
    ...S.
    .S...

    ์‹คํ–‰๊ฒฐ๊ณผ 1

    1
    .S...
    ...S.
    S.D..
    ...S.
    .S...

    ์˜ˆ์ œ 2

    1 2
    SW

    ์‹คํ–‰๊ฒฐ๊ณผ 2

    0

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ์ด ๋ฌธ์ œ๋Š” ๋…ธํŠธ์— ์ ํ˜€์žˆ๋“ฏ, ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ์ตœ์†Œ ์šธํƒ€๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค.
      ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์„œ ๋Š‘๋Œ€๊ฐ€ ์–‘์—๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๋‹ค.
      ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ๋Š‘๋Œ€๊ฐ€ ์–‘์—๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด 0, ์—†๋‹ค๋ฉด 1์„ ์ถœ๋ ฅํ•˜๊ณ 
    1. ์ตœ์†Œ ๋ช‡ ๊ฐœ์˜ ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ณต๊ฐ„์„ ์šธํƒ€๋ฆฌ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
    1. ๋งต ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ board์— ์ž…๋ ฅํ•  ๋•Œ, ํ•œ ์ค„๋งˆ๋‹ค ๋ฌธ์ž W ๋ฅผ ๊ฒ€์ƒ‰ํ•ด ๋Š‘๋Œ€์˜ ์ขŒํ‘œ๋ฅผ wolf ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด๋‘”๋‹ค.
    1. wolf ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ•ด๋‹น wolf ์ขŒํ‘œ์—์„œ ์–‘์—๊ฒŒ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด retrun False๋ฅผ ํ•ด์ฃผ๊ณ  0์„ ์ถœ๋ ฅํ•ด์ค€ ๋’ค, exit().
    1. return True ๋ผ๋ฉด 1์„ ์ถœ๋ ฅ ํ›„ board ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    ๐Ÿ’พ ๋ฐฐ์šด์ 

    1. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” ์ตœ์†Œ ๋ช‡ ๊ฐœ์˜ ์šธํƒ€๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค ๋ผ๋Š” ๊ฒƒ์— ์ค‘์ ์„ ๋‘๊ณ  ํ’€์ดํ•ด์„œ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.