J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 3109๋ฒˆ ๋นต์ง‘ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 3109๋ฒˆ ๋นต์ง‘ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

์œ ๋ช…ํ•œ ์ œ๋นต์‚ฌ ๊น€์›์›…์€ ๋นต์ง‘์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์›์›…์ด์˜ ๋นต์ง‘์€ ๊ธ€๋กœ๋ฒŒ ์žฌ์ • ์œ„๊ธฐ๋ฅผ ํ”ผํ•ด๊ฐ€์ง€ ๋ชปํ–ˆ๊ณ , ๊ฒฐ๊ตญ ์‹ฌ๊ฐํ•œ ์žฌ์ • ์œ„๊ธฐ์— ๋น ์กŒ๋‹ค.

์›์›…์ด๋Š” ์ง€์ถœ์„ ์ค„์ด๊ณ ์ž ์—ฌ๊ธฐ์ €๊ธฐ ์ง€์ถœ์„ ์‚ดํŽด๋ณด๋˜ ์ค‘์—, ๊ฐ€์Šค๋น„๊ฐ€ ์ œ์ผ ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›์›…์ด๋Š” ๊ทผ์ฒ˜ ๋นต์ง‘์˜ ๊ฐ€์Šค๊ด€์— ๋ชฐ๋ž˜ ํŒŒ์ดํ”„๋ฅผ ์„ค์น˜ํ•ด ํ›”์ณ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋นต์ง‘์ด ์žˆ๋Š” ๊ณณ์€ R*C ๊ฒฉ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ์งธ ์—ด์€ ๊ทผ์ฒ˜ ๋นต์ง‘์˜ ๊ฐ€์Šค๊ด€์ด๊ณ , ๋งˆ์ง€๋ง‰ ์—ด์€ ์›์›…์ด์˜ ๋นต์ง‘์ด๋‹ค.

์›์›…์ด๋Š” ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋นต์ง‘๊ณผ ๊ฐ€์Šค๊ด€ ์‚ฌ์ด์—๋Š” ๊ฑด๋ฌผ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฑด๋ฌผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํŒŒ์ดํ”„๋ฅผ ๋†“์„ ์ˆ˜ ์—†๋‹ค.

๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ์€ ์ฒซ์งธ ์—ด์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ์—ด์—์„œ ๋๋‚˜์•ผ ํ•œ๋‹ค. ๊ฐ ์นธ์€ ์˜ค๋ฅธ์ชฝ, ์˜ค๋ฅธ์ชฝ ์œ„ ๋Œ€๊ฐ์„ , ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ์นธ์˜ ์ค‘์‹ฌ๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์›์›…์ด๋Š” ๊ฐ€์Šค๋ฅผ ๋˜๋„๋ก ๋งŽ์ด ํ›”์น˜๋ ค๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์„ค์น˜ํ•  ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ๊ฒน์น  ์ˆ˜ ์—†๊ณ , ์„œ๋กœ ์ ‘ํ•  ์ˆ˜๋„ ์—†๋‹ค. ์ฆ‰, ๊ฐ ์นธ์„ ์ง€๋‚˜๋Š” ํŒŒ์ดํ”„๋Š” ํ•˜๋‚˜์ด์–ด์•ผ ํ•œ๋‹ค.

์›์›…์ด ๋นต์ง‘์˜ ๋ชจ์Šต์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์›์›…์ด๊ฐ€ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— R๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ R ≤ 10,000, 5 ≤ C ≤ 500)

๋‹ค์Œ R๊ฐœ ์ค„์—๋Š” ๋นต์ง‘ ๊ทผ์ฒ˜์˜ ๋ชจ์Šต์ด ์ฃผ์–ด์ง„๋‹ค. '.'๋Š” ๋นˆ ์นธ์ด๊ณ , 'x'๋Š” ๊ฑด๋ฌผ์ด๋‹ค. ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ์—ด์€ ํ•ญ์ƒ ๋น„์–ด์žˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์›์›…์ด๊ฐ€ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

https://www.acmicpc.net/problem/3109

 

3109๋ฒˆ: ๋นต์ง‘

์œ ๋ช…ํ•œ ์ œ๋นต์‚ฌ ๊น€์›์›…์€ ๋นต์ง‘์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์›์›…์ด์˜ ๋นต์ง‘์€ ๊ธ€๋กœ๋ฒŒ ์žฌ์ • ์œ„๊ธฐ๋ฅผ ํ”ผํ•ด๊ฐ€์ง€ ๋ชปํ–ˆ๊ณ , ๊ฒฐ๊ตญ ์‹ฌ๊ฐํ•œ ์žฌ์ • ์œ„๊ธฐ์— ๋น ์กŒ๋‹ค. ์›์›…์ด๋Š” ์ง€์ถœ์„ ์ค„์ด๊ณ ์ž ์—ฌ๊ธฐ์ €๊ธฐ ์ง€์ถœ์„ ์‚ดํŽด๋ณด๋˜

www.acmicpc.net

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

r, c = map(int, input().split())
data = []
for _ in range(r):
    data.append(list(input()))

def dfs(array, x, y, visited):
    global pipe
    if y == c-2:
        pipe = array
        return 
    for i in range(3):
        nx = x + dx[i]
        if 0 <= nx and nx < r and not visited[nx][y+1] and data[nx][y+1] == '.' :
            visited[nx][y+1] = 1
            dfs(array + [(nx, y+1)], nx, y+1, visited)
            if len(pipe) == c-2:
               break

visited = [[0]*c for _ in range(r)]
dx = [-1, 0, 1]
result = 0
for i in range(r):
    pipe = []
    if data[i][1] == '.':
        visited[i][1] = 1
        dfs([(i, 1)], i, 1, visited)
        if pipe:
            for x, y in pipe:
                data[x][y] = 'P'
            result += 1
print(result)

๋งจ ์ฒ˜์Œ ํ’€์ดํ•œ ์ฝ”๋“œ์ด๋‹ค. ๊ฐ ์—ด์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๊ฐ€์žฅ ์ฒซ๋ฒˆ ์งธํ–‰๊ณผ ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ๊ธธ์„ ์„ ํƒํ•˜๋Š” ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ์ด๋‹ค. ๊ธธ ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋Š” DFS๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋ชจ๋‘ ๋งž์ถ”์—ˆ์ง€๋งŒ ์ œ์ถœ ์‹œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค. ํ•œ ์งˆ๋ฌธ ๊ธ€์—์„œ ํ•ด๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. visited ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์„œ ์ด์ „์— ํƒ์ƒ‰ํ•œ ๊ธธ์€ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ–ˆ๋‹ค.

r, c = map(int, input().split())
data = []
for _ in range(r):
    data.append(list(input()))

def dfs(array, x, y):
    if y == c-2:
        return True
    data[x][y] = 'P'
    for i in range(3):
        nx = x + dx[i]
        if 0 <= nx and nx < r and data[nx][y+1] == '.' :
            if dfs(array + [(nx, y+1)], nx, y+1):
                return True
    return False

dx = [-1, 0, 1]
result = 0
for i in range(r):
    if data[i][1] == '.':
        if dfs([(i, 1)], i, 1):
            result += 1
print(result)

๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ ํ’€์ด ๊ธ€์„ ๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•ด๋ณด์•˜๋‹ค. ์ด์ „์ฒ˜๋Ÿผ ํŒŒ์ดํ”„๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ์— ๋Œ€ํ•ด์„œ๋งŒ data ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ์ง€ ์•Š๊ณ   ํƒ์ƒ‰ ์‹œ๋งˆ๋‹ค ๋ฌด์กฐ๊ฑด data ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค๋ฉด ๊ธธ ํƒ์ƒ‰๊ณผ ๋ฐฉ๋ฌธํ™•์ธ์„ ๋™์‹œ์— ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ์ค„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. visited ํ…Œ์ด๋ธ”์„ ์—†์• ๊ณ  data์— ์ง์ ‘ ๋ฐฉ๋ฌธ์˜ ํ‘œ์‹œ๋ฅผ ํ•˜๋ฉด์„œ, ํŒŒ์ดํ”„๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” return ๊ฐ’์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 2206๋ฒˆ ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.27
[BOJ] ๋ฐฑ์ค€ 12904๋ฒˆ A์™€ B - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.06
[BOJ] ๋ฐฑ์ค€ 1781๋ฒˆ ์ปต๋ผ๋ฉด - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.04
[BOJ] ๋ฐฑ์ค€ 8980๋ฒˆ ํƒ๋ฐฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.04
[BOJ] ๋ฐฑ์ค€ 15683๋ฒˆ ๊ฐ์‹œ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.04
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 2206๋ฒˆ ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 12904๋ฒˆ A์™€ B - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 1781๋ฒˆ ์ปต๋ผ๋ฉด - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 8980๋ฒˆ ํƒ๋ฐฐ - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”