https://www.acmicpc.net/problem/19949
19949๋ฒ: ์์ฌ์ ์ํ
์ปดํจํฐ๊ณตํ๊ณผ ํ์์ธ ์์ฌ๋ ์ด๋ฒ ํ๊ธฐ์ ์๊ณ ๋ฆฌ์ฆ ์์ ์ ์๊ฐํ๋ค. ํ์์ ์์ ์ ์ค๋ ฅ์ ๋งน์ ํ ์์ฌ๋ ์ํ ์ ๋ ๊น์ง ๊ณต๋ถ๋ฅผ ํ์ง ์์๋ค. ๋น์ฐํ๊ฒ๋ ๋ฌธ์ ๋ฅผ ํ๋๋ ํ์ง ๋ชปํ์์ง๋ง ๋คํ
www.acmicpc.net
๋ฌธ์
์ปดํจํฐ๊ณตํ๊ณผ ํ์์ธ ์์ฌ๋ ์ด๋ฒ ํ๊ธฐ์ ์๊ณ ๋ฆฌ์ฆ ์์
์ ์๊ฐํ๋ค.
ํ์์ ์์ ์ ์ค๋ ฅ์ ๋งน์ ํ ์์ฌ๋ ์ํ ์ ๋ ๊น์ง ๊ณต๋ถ๋ฅผ ํ์ง ์์๋ค.
๋น์ฐํ๊ฒ๋ ๋ฌธ์ ๋ฅผ ํ๋๋ ํ์ง ๋ชปํ์์ง๋ง ๋คํํ๋ ๋ฌธ์ ๊ฐ 5์ง ์ ๋ค์ ๊ฐ๊ด์ 10๋ฌธ์ ์๋ค.
์ฐ๊ธฐ์๋ ์์ ์๋ ์์ฌ๋ 3๊ฐ์ ์ฐ์๋ ๋ฌธ์ ์ ๋ต์ ๊ฐ์ง ์๊ฒ ํ๋ค๋ ์์ ์ ๋น๋ฒ์ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ์ฐ์๋ค.
์ด๋ ์์ฌ์ ์ ์๊ฐ 5์ ์ด์์ผ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ์ฌ๋ผ.
๋ฌธ์ ์ ์ ์๋ 1๋ฌธ์ ๋น 1์ ์ฉ์ด๋ค.
์ ๋ ฅ
์ํ์ ์ ๋ต์ด ์ฒซ ์ค์ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์์ฌ์ ์ ์๊ฐ 5์ ์ด์์ผ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ.
์์ ์ ๋ ฅ1
1 2 3 4 5 1 2 3 4 5์์ ์ถ๋ ฅ1
261622
def dfs(level):
global cnt
if level == 10: #level 10 -10๋ฌธ์
grade = 0 #๋ง์ ๊ฐฏ์
for j in range(10):
if visit[j] == arr[j]: #์์ฌ์ ๋ต๊ณผ ์ ๋ต์ด ๊ฐ์ ๋
grade+=1 #์ ์ +1
if grade >=5: #5์ ์ด์์ผ ๋
cnt+=1 #๊ฒฝ์ฐ์ ์ ์ถ๊ฐ!
return
for i in range(1,6): #5์ง์ ๋ค branch 5
# ์์ฌ๊ฐ 3๊ฐ์ ์ฐ์๋ ๋ฌธ์ ์ ๋ต์ ๊ฐ์ง ์๊ฒ ํ๋ ๋ฐฉ๋ฒ
if level > 1 and visit[level-2] == visit[level-1] == i:continue
#3๊ฐ๊ฐ ์ฐ์๋์ง ์๋๋ค๋ฉด
visit.append(i)
dfs(level+1)
visit.pop()
arr = list(map(int,input().split())) #์ ๋ต
visit = [] #์์ฌ์ ๋ต์
cnt=0
dfs(0)
print(cnt)
'Problem Solving > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[baekjoon]python #2606 ๋ฐ์ด๋ฌ์ค (0) | 2022.05.02 |
---|---|
[baekjoon]python #2589 ๋ณด๋ฌผ์ฌ (0) | 2022.04.26 |
[baekjoon]python #2477 ์ฐธ์ธ๋ฐญ (0) | 2022.03.11 |
[baekjoon ]python #1436 ์ํ๊ฐ๋ ์ (0) | 2022.03.11 |
[baekjoon]python #1244 ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2022.03.10 |
๋๊ธ