1ab5d935eeed3ba36ded87b141d0706a37f1ef9cbd59c3bedfcbb2a9cd989967


์•ˆ๋…•ํ•˜์„ธ์š”. ์ €๋Š” ์ธ๋””๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์–ธ๋ฆฌ์–ผ๋งจ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฆ˜ ์ €๋Š” ํ•˜๋‚˜์˜ ์•„์ด๋””์–ด์— ๊นŠ๊ฒŒ ๋น ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€˜ํ’๋ž˜์˜ ์‹œ๋ Œโ€™์ด ์ฃผ๋Š” ๋‹จ์ˆœํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋ฏธ์น ๋“ฏํ•œ ์ค‘๋…์„ฑ, โ€˜ํƒ€๋ฅด์ฝ”ํ”„โ€™๋ฅผ ํ• ๋•Œ ํƒˆ์ถœ๊ณผ์ •์—์„œ ์˜ค๋Š” ๊ทน๋„์˜ ๊ธด์žฅ๊ฐ,

๊ทธ๋ฆฌ๊ณ  ๋ผ์ŠคํŠธ์˜ค๋ธŒ์–ด์Šค์™€ ๊ฐ™์€ ์ข€๋น„ ์•„ํฌ์นผ๋ฆฝ์Šค ๋ฐฐ๊ฒฝ์—์„œ ์˜ค๋Š” ๊ณ ๋ฆฝ๊ฐ๊ณผ ์†Œ์™ธ๊ฐ... ์ด ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์„ž๋Š”๋‹ค๋ฉด

์ œ๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ถˆ์น˜๋ณ‘์ธ ๊ฒŒ์ž„๋ถˆ๊ฐ์ฆ๋„ ์น˜๋ฃŒ๋ ์ˆ˜ ์žˆ์„๊ฑฐ ๊ฐ™๋‹ค๋Š” ํฌ๋ง์ด ์ƒ๊ฒจ ํ•˜๋ฃจํ•˜๋ฃจ ์žฌ๋ฐŒ๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.






1ebec223e0dc2bae61ab96e746837170bd0003a1346c1f024a597a3624535b493e69faca65e7fa0dd7b8efdc55561f58dc1ecb7e6704c4


๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋˜์ „ ์ƒ์„ฑ์„ ๋งก์€ ์ €์˜ ๊ฐ€์žฅ ๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์€ ์ด๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

โ€˜์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด, ์‚ด์•„์žˆ๋Š” ๊ณต๊ฐ„์„ ํƒํ—˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋А๋ผ๊ฒŒ ํ• ๊นŒ?โ€™

์˜ค๋Š˜์€ ๊ทธ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ €์˜ ์ ‘๊ทผ ์ค‘ ํ•˜๋‚˜์ธ, โ€˜๋žœ๋ค ๋˜์ „ ์ƒ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜โ€™์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์กฐ๊ธˆ ํ’€์–ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.


1.ย ๊ณต๊ฐ„ย :ย 




์ •์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๋“œ์˜ ์ค‘์•™ ์ขŒํ‘œ 0,0์œผ๋กœ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ

Max Tile Size์˜ ๊ฐฏ์ˆ˜ ๋งŒํผ ์ฑ„์›Œ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2. RandomWalk์™€ DFS
  1. ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š”, ์•„์ง ๊ฐ€๋ณด์ง€ ์•Š์€ ๊ธธ์„ ์ฐพ๋Š”๋‹ค.
  2. ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ๊ธธ์ด ์žˆ๋‹ค๋ฉด, ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ๊ทธ ๊ธธ๋กœ ๋‚˜์•„๊ฐ„๋‹ค.
  3. ๋” ์ด์ƒ ๋‚˜์•„๊ฐˆ ๊ธธ์ด ์—†๋Š” ๋ง‰๋‹ค๋ฅธ ๊ณณ์— ๋‹ค๋‹ค๋ฅด๋ฉด, ๋ฐ”๋กœ ์ด์ „์— ์ง€๋‚˜์™”๋˜ ๊ฐˆ๋ฆผ๊ธธ๋กœ ๋ฐœ๊ธธ์„ ๋Œ๋ ค ๋‹ค๋ฅธ ๊ธธ์„ ํƒ์ƒ‰ํ•œ๋‹ค.

์ด ๊ฐ„๋‹จํ•œ ์›์น™์„ Current Size == Max Size์— ๋„๋‹ฌํ• ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.




def neighbors(i, j): cand = [(i+1, j), (i-1, j), (i, j+1), (i, j-1)] cand = [(a, b) for (a, b) in cand if 0 <= a < n and 0 <= b < n] random.shuffle(cand) return cand while stack: i, j = stack[-1] unvisited = [p for p in neighbors(i, j) if p not in visited] if unvisited: ni, nj = random.choice(unvisited) stack.append((ni, nj)) visited.add((ni, nj)) order.append((ni, nj)) else: stack.pop()

์ด์›ƒ ํŒ๋ณ„์€ ์ขŒ์ƒ๋‹จ ํƒ€์ผ์ž„์œผ๋กœ ๊ฐ€์ •ํ•˜๊ณ  ์ด์›ƒ ํƒ€์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‘๋ฒˆ์งธ๋กœ ์ œ๊ฐ€ ๊ณ ๋ฏผํ•œ ๋ถ€๋ถ„์€ ์ด๋ ‡๊ฒŒ ๋ฌด์˜๋ฏธํ•œ ๊ณต๊ฐ„์—

ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํƒํ—˜์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ํƒํ—˜์— ๋”ฐ๋ฅธ ์„œ์‚ฌ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก

ํŠน๋ณ„ํ•œ ๋ฐฉ๋“ค์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ 

2ร—2 ์‚ฌ์ด์ฆˆ์˜ ํƒ€์ผ์„ ์ฐพ์•„๋‚ด๋Š” ๊ทœ์น™์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.







ํ……๋นˆ ๊ณต๊ฐ„์— ์˜๋ฏธ ๋ถ€์—ฌ


















# 1) ์ฒซ maxx๊ฐœ ๋ฐฉ๋ฌธ ์…‹ kmax = min(maxx, len(order)) visited_k = set(order[:kmax]) # 2) 2x2 ํ›„๋ณด(์ขŒํ•˜๋‹จ ์ธ๋ฑ์Šค ๋ชจ์Œ) candidates = [] for i0 in range(n - 1): for j0 in range(n - 1): block = [(i0, j0), (i0 + 1, j0), (i0, j0 + 1), (i0 + 1, j0 + 1)] if all(p in visited_k for p in block): candidates.append((i0, j0)) # 3) ํ›„๋ณด ์ค‘ ์„œ๋กœ ๊ทผ์ ‘(๊ฒน์นจ/๋ณ€/๋ชจ์„œ๋ฆฌ ์ ‘์ด‰)ํ•˜์ง€ ์•Š๋„๋ก ์„ ํƒ # top-left ์ขŒํ‘œ ๊ฐ„ ์ฒด๋น„์‡ผํ”„ ๊ฑฐ๋ฆฌ d >= 3 ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ›„๋ณด๋กœ ์„ ํƒ chosen = [] def is_far_enough(a, b): return max(abs(a[0] - b[0]), abs(a[1] - b[1])) >= 3 # ๊ฑฐ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋–จ์–ด์ ธ์žˆ๋‹ค๋ฉด 2x2๋กœ ํŒ๋‹จ for c in candidates: if all(is_far_enough(c, d) for d in chosen): chosen.append(c)




์•„์ง์€ ์ด๋ ‡๊ฒŒ ์‹œ๊ฐํ™”๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ,

๋จธ์ง€์•Š์•„ ์ด ๊ณต๊ฐ„์€ ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ๋ฐœ์†Œ๋ฆฌ์™€ ์ข€๋น„์˜ ์‹ ์Œ, ๊ทธ๋ฆฌ๊ณ 

ํฌ๋ง๊ณผ ์ ˆ๋ง์ด ๊ต์ฐจํ•˜๋Š” ์ด์„ฑ์œผ๋กœ ๊ฐ€๋“ ์ง€๋ฉด ์–ด๋–จ๊นŒ ํ•˜๋Š” ์ƒ์ƒ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ณผ์ •์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?




์—ฌ๋Ÿฌ๋ถ„์ด ๋กœ๊ทธ๋ผ์ดํฌ ๊ฒŒ์ž„์—์„œ ๊ฐ€์žฅ ์ฆ๊ฑฐ์›€์„ ๋А๋ผ๋Š” ์ˆœ๊ฐ„์€ ์–ธ์ œ์ธ๊ฐ€์š”?

๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ค๋ ค์ฃผ์‹œ๋ฉด ์•ž์œผ๋กœ์˜ ๊ฐœ๋ฐœ์— ํฐ ์˜๊ฐ์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ, ๋‹ค์Œ์—๋„ ํฅ๋ฏธ๋กœ์šด ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!



๋ ˆํผ๋Ÿฐ์Šค

๋„ค์ด์ณ ์˜ค๋ธŒ ์ฝ”๋“œ์— RandomWalk์— ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด ์ฑ…์— ๋„์›€์„ ๋งŽ์ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ๊ณผ ์„ค๋ช…์ด ์นœ์ ˆํ•ฉ๋‹ˆ๋‹ค.