๊ธฐ๋ก๋ฐฉ

BOJ_14620 : ๊ฝƒ๊ธธ ๋ณธ๋ฌธ

CodingTest/Python

BOJ_14620 : ๊ฝƒ๊ธธ

Soom_1n 2022. 9. 10. 16:06

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

14620๋ฒˆ: ๊ฝƒ๊ธธ

2017๋…„ 4์›” 5์ผ ์‹๋ชฉ์ผ์„ ๋งž์ดํ•œ ์ง„์•„๋Š” ๋‚˜๋ฌด๋ฅผ ์‹ฌ๋Š” ๋Œ€์‹  ํ•˜์ดํ…Œํฌ๊ด€ ์•ž ํ™”๋‹จ์— ๊ฝƒ์„ ์‹ฌ์–ด ๋“ฑ๊ตํ•  ๋•Œ ๋งˆ๋‹ค ๊ฝƒ๊ธธ์„ ๊ฑท๊ณ  ์‹ถ์—ˆ๋‹ค. ์ง„์•„๊ฐ€ ๊ฐ€์ง„ ๊ฝƒ์˜ ์”จ์•—์€ ๊ฝƒ์„ ์‹ฌ๊ณ ๋‚˜๋ฉด ์ •ํ™•ํžˆ 1๋…„ํ›„์— ๊ฝƒ์ด ํ”ผ๋ฏ€

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ตœ์†Œ๋น„์šฉ์œผ๋กœ ์„ธ ๊ฝƒ์„ ์‹ฌ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋Š” ๋ธŒ๋ฃจํŠธ ํฌ์Šค ๋ฌธ์ œ์ด๋‹ค. 

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import sys
input = sys.stdin.readline

N = int(input())
flower = []
visit = [[0]*N for _ in range(N)]
answer = 200*16
dx = [0, 0, -1, 0, 1]
dy = [0, -1, 0, 1, 0]

for i in range(N):
    n = list(map(int,input().strip().split()))
    flower.append(n)


def check(x, y):
    for i in range(5):
        if visit[x+dx[i]][y+dy[i]] == 1:
            return False
    return True

def switch(flag,x,y):
    sum = 0
    for i in range(5):
        visit[x+dx[i]][y+dy[i]] = flag
        sum += flower[x+dx[i]][y+dy[i]]
    return sum

def dfs(coin, count, x):
    global answer
    if count >= 3:
        if coin < answer:
            answer = coin
        return

    for i in range(x, N-1):
        for j in range(1, N-1):
            if check(i,j):
                dfs(coin + switch(1,i,j), count+1, i)
                switch(0,i,j)


dfs(0, 0, 1)
print(answer)

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • dx, dy : ํ˜„์œ„์น˜, ์ขŒ,์ƒ,์šฐ,ํ•˜ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•œ ๋ฆฌ์ŠคํŠธ
  • check(x, y) ํ•จ์ˆ˜ : x, y ์— ๊ฝƒ์„ ์‹ฌ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ
  • switch(flag, x, y) : x, y ์— ๊ฝƒ์„ ์‹ฌ๊ฑฐ๋‚˜ ์‹ฌ์ง€์•Š์€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ. ๋•… ๊ฐ€๊ฒฉ์˜ ํ•ฉ๋„ ๋ฐ˜ํ™˜.
  • dfs(coin, count, x)
    • ํ™”๋‹จ์„ ์ „๋ถ€ ์ˆœํšŒํ•˜๋ฉฐ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์Œ
    • ๊ฝƒ์„ 3๊ฐœ ์‹ฌ์œผ๋ฏ€๋กœ, dfs ์žฌ๊ท€๊ฐ€ 3์ด ๋ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰
  • ๋ฐ˜๋ณต ํƒ์ƒ‰์—์„œ x ์ขŒํ‘œ๋งŒ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฏ€๋กœ, y์ขŒํ‘œ ์ค‘๋ณต๊ฒ€์‚ฌ๊ฐ€ ์ƒ๊น€

 


๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ƒ๋‹นํžˆ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ๋‹ค. ์ฒ˜์Œ ๋ดค์„๋• ํฌ๊ธฐํ–ˆ๊ณ , 2๋ฒˆ์งธ์—๋Š” ๊ณ ๋ฏผํ•˜๋‹ค ๋‹ต์•ˆ์ง€๋ฅผ ๋ดค๋‹ค.
    ๋‹ต์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด๋‹ˆ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ 3ํšŒ์ฐจ๋กœ ๋„์ „ํ–ˆ์ง€๋งŒ, ์กฐ๊ธˆ์”ฉ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒจ์„œ ๊ฒฐ๊ตญ ๋‹ต์•ˆ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ–ˆ๋‹ค.
  • ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํƒœ๊ทธ์— ํ•˜๋‚˜ ์žˆ์ง€๋งŒ, bfs๋‚˜ ๋ฒกํŠธ๋ž˜ํ‚น ๋“ฑ๋„ ์ ์šฉ๋๋‹ค.
  • ์ฒ˜์Œ์—” y์ขŒํ‘œ ์ค‘๋ณต๊ฒ€์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ์ง€๋งŒ ์‚ฌ์†Œํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์•„์ ธ์„œ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์— ๋” ๋ฌด๊ฒŒ๋ฅผ ๋‘๊ณ  ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค.

728x90

'CodingTest > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1548 : ๋ถ€๋ถ„ ์‚ผ๊ฐ ์ˆ˜์—ด  (0) 2022.09.11
BOJ_2961 : ๋„์˜์ด๊ฐ€ ๋งŒ๋“  ๋ง›์žˆ๋Š” ์Œ์‹  (0) 2022.09.10
BOJ_1037 : ์•ฝ์ˆ˜  (0) 2022.09.09
BOJ_4101 : ํฌ๋ƒ?  (0) 2022.09.09
BOJ_17626 : Four Squares  (0) 2022.09.07