DFS BFS

    dfs - 알파벳 BackTracking

    알파벳 실패다국어 한국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 256 MB 87690 28284 17236 29.133% 문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다. 입력 첫째 줄에 R과 C가 빈칸을 사이에 두고 ..

    DP - Top-Down 방식과 Bottom-up

    # bottom-top 방식 ''' n=int(input()) dp=[0]*(n+1) dp[1]=1 dp[2]=2 for i in range(3,n+1): dp[i]=dp[i-1]+dp[i-2] print(dp[n]) ''' # TopDown 방식 Dfs사용 def dfs(n): if dp[n]>0: return dp[n] if n==1 or n==2: return n else: dp[n]=dfs(n-1)+dfs(n-2) return dp[n] n=int(input()) dp=[0]*(n+1) print(dfs(n)) 말 그대로 Top-Down방식은 위에서부터 아래로 이동해가면서 최적의 해를 찾아가는방식이고 Bottom-up은 반대이다 다만, Top-Down은 보통 DFS를 많이사용하는것같다.주의하자