โ๋ฌธ์
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
๋ฉ๋ชจ๋ฆฌ: 76,160 KB, ์๊ฐ: 333 ms
โ๐ปํ์ด
์ฐ์ ๋ฌธ์ ์์ ์ํ์ข์ฐ๋ก ์์ง์ผ ์ ์๋ค๊ณ ํ์ผ๋ฏ๋ก BFS์ DFS๊ฐ ๋ฐ๋ก ์๊ฐ๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ DFS๋ก ํ๋ฉด ๋๋ค.
๊ฐ๊ฐ์ ์์น๋ง๋ค ๋ง๋ค ์ ์๋ ์ซ์๋ฅผ ์ํ์ข์ฐ๋ก ํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธธ์ด๊ฐ 7์ด ๋์์ ๋ ์ด ์ซ์๊ฐ ์ด๋ฏธ ๋ง๋ค์ด์ง ์์ธ์ง ์๋์ง ํ๋ณํ์ฌ nums์ ๊ธฐ๋กํด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก nums์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ง๋ค ์ ์๋ ์ซ์์ ๊ฐ์๋ฅผ ์ ์ ์๋ค.
๐ป์ฝ๋
T = int(input())
def dfs(y, x, res):
global nums
if len(res) == 7:
if res not in nums:
nums.add(res)
return
if 0 <= y < 4 and 0 <= x < 4:
dfs(y + 1, x, res + board[y][x])
dfs(y - 1, x, res + board[y][x])
dfs(y, x + 1, res + board[y][x])
dfs(y, x - 1, res + board[y][x])
for tc in range(1, T + 1):
board = [input().split() for _ in range(4)]
nums = set()
for y in range(4):
for x in range(4):
dfs(y, x, "")
print(f"#{tc} {len(nums)}")
๐ํ๊ธฐ
์ฒ์์ dfs ํ๋ผ๋ฏธํฐ์ cnt๋ก ๊ฐ์๋ฅผ ์ ๋๋ฐ ์๊ฐํด ๋ณด๋ ๊ตณ์ด ๊ทธ๋ด ํ์๊ฐ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง๋ ๊ตณ์ด ans๋ฅผ ์จ์ ๊ฐ์๋ฅผ ์ผ์ผ์ด ์ ํ์๊ฐ ์์๋ค. ๊ทธ๋ ๊ฒ ์คํจํ๊ณ ๋ช ๊ฐ๋ฅผ ์์ ํ๊ณ ๋๋ ๋ฐ๋ก ํต๊ณผ~~
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14891. ํฑ๋๋ฐํด/Python - Gold5 (2) | 2025.07.25 |
---|---|
[๋ฐฑ์ค] 14501. ํด์ฌ/Python - Silver3 (1) | 2025.07.23 |
[SWEA] 1242. ์ํธ์ฝ๋ ์ค์บ/Python - D5 (1) | 2025.07.21 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต์์ง์ฌ๊ฐํ/Python - Lv.1 (0) | 2025.07.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต/Python - Lv.1 (1) | 2025.07.15 |