-
[프로그래머스] 단어 변환 - 파이썬(python)
나의 풀이 step = [] def dfs(begin, target, words, cnt): if begin == target : step.append(cnt) return for i in range(len(words)) : tmp = 0 for j in range(len(words[i])) : if begin[j] == words[i][j] : tmp += 1 if tmp == len(begin)-1 : lst = words[:] lst.remove(words[i]) dfs(words[i], target, lst, cnt+1) def solution(begin, target, words): dfs(begin, target, words, 0) if step == [] : return 0 else : st..
알고리즘/DFS, BFS
2022. 9. 21.
-
[프로그래머스] 게임 맵 최단거리 - 파이썬(python)
문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습니다. 아래 예시는 캐릭터가 상대 팀 진영으로 가는 두 가지 방법을 나타내고 있습니다. 첫 번째 방법은 11..
알고리즘/DFS, BFS
2022. 9. 20.
-
[프로그래머스] 타겟 넘버 - 파이썬(python)
나의 풀이 a = 0 def dfs(i, result, numbers, target) : global a if i == len(numbers) : if result == target : a+=1 return else : dfs(i+1, result+numbers[i], numbers, target) dfs(i+1, result-numbers[i], numbers, target) def solution(numbers, target): result = 0 dfs(0, result, numbers, target) return a 위 그림처럼 i번째 숫자에 대해 +부호 or -부호를 붙여 계산하는 모든 경우의 수를 따져보면 된다. 즉, DFS 로 모든 경우에 대해 깊이 우선 탐색을 한다. 그리고, i가 마지막원..
알고리즘/DFS, BFS
2022. 9. 20.
-
[프로그래머스] 등굣길 - 파이썬(python)
나의 풀이 def solution(m, n, puddles): dp = [[0]*(m+1) for _ in range(n+1)] print(dp) for i in range(1, n+1) : for j in range(1, m+1) : if i == 1 and j == 1 : dp[i][j] = 1 elif [j,i] in puddles : dp[i][j] = 0 else : dp[i][j] = dp[i-1][j] + dp[i][j-1] # print("dp[{}][{}] = {}".format(i,j,dp[i][j])) return dp[n][m] % 1000000007 (1,1) 을 집으로, (n,m) 을 학교 좌표로 만들기 위해, 이차원 배열을 [n+1][m+1] 의 크기로 초기화한다. 이번 문제는..
알고리즘/동적프로그래밍(DP)
2022. 9. 19.