문제
주어진 수를 문자로 매칭해서 해당 수를 문자로 바꿔라
문제 풀이
def DFS(L, p):
global cnt
if L == n:
cnt += 1
for i in range(p):
print(chr(res[i] +64), end=" ")
print()
else:
for i in range(1,27):
if code[L] == i:
res[p] = i
DFS(L+1, p+1)
elif i>=10 and code[L] == i//10 and code[L+1] == i%10:
res[p] = i
DFS(L+2, p+1)
if __name__ =="__main__":
code = list(map(int,input()))
n = len(code)
code.insert(n,-1)
res = [0] * (n+3)
cnt = 0
DFS(0,0)
print(cnt)
- 해당 레벨의 노드에서 찾는 값의 문자열에 매칭되는 수를 res에 넣기 위해서 26번을 돌며 진행하고 이때 for문을 도는 i가 10이 넘어가면 2의 자리수이기 때문에 이를 따로 확인해준다.
- 2의 자리수를 확인하면 code를 두 개 사용해서 확인하기에 node Level은 +2를 해주어야 한다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[BFS][2차원 리스트] - 사과나무 (0) | 2022.07.31 |
---|---|
[완전탐색][상태트리탐색] - 송아지 찾기(BFS) (0) | 2022.07.28 |
[완전탐색][트리] - 동전 분배하기(DFS) (0) | 2022.07.26 |
[완전탐색][상태 트리] - 동전 바꿔주기(DFS) (0) | 2022.07.26 |
[완전탐색][상태 트리] - 휴가(DFS) (0) | 2022.07.25 |