https://school.programmers.co.kr/learn/courses/30/lessons/84512
해시와 dfs를 조합하는 백트래킹 문제이다.
문자열을 해시로 저장하여 만약 해당 문자열이 있는 경우 방문처리를 하여 조건에 걸리지 않도록 중복없는 완전탐색을 진행
cnt = 0
result = 0
text = ""
s_dict = {}
def dfs(n, s):
global cnt, result, text
if s == text:
result = cnt
return
if len(s) == 5:
return
elif result == 0:
for i in ["A", "E", "I", "O", "U"]:
if s+i not in s_dict:
s_dict[s+i] = 1
cnt += 1
dfs(n + 1, s + i)
def solution(word):
global text
text = word
dfs(0,"")
return result
회고.
딕셔너리와 defaultdict를 더욱 원활하게 사용할 수 있도록 해시를 더 다듬을 필요가 있어보임
'PS' 카테고리의 다른 글
[BOJ] Python 백준 특정 거리의 도시 찾기(18352) (0) | 2024.11.07 |
---|---|
[BOJ] Python 백준 촌수계산(2644) (0) | 2024.11.04 |
[BOJ] Python 백준 알고리즘 수업 - 너비 우선 탐색 1(24444) (0) | 2024.11.01 |
[BOJ] Python 백준 알고리즘 수업 - 깊이 우선 탐색 1(24479) (0) | 2024.10.31 |
[Progammers] Python 프로그래머스 입국심사(43238) (2) | 2024.10.30 |
댓글