-
[프로그래머스] 입국심사 - 파이썬(python)
나의 풀이 def binarySearch(left, right, n, times): answer = right while left = n : answer = min(answer, mid); right = mid - 1 else : left = mid + 1 return answer def solution(n, times): min_time = 0 max_time = max(times) * n answer = binarySearch(min_time, max_time, n, times) return answer 이분탐색은 탐색하는데 걸리는 시간이 O(log N) 이기 때문에, 탐색해야 하는 input 이 아주 큰 숫자일 때 사용하기 좋다. 따라서, 위 문제에서도 심사를 하는데 걸리는 시간을 기준으로 이분탐색..
알고리즘/이분탐색
2022. 9. 24.
-
[프로그래머스] 단어 변환 - 파이썬(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.