Python/알고리즘 24

프로그래머스 2022 KAKAO BLIND RECRUIMENT

신고 결과 받기 from collections import defaultdict def solution(id_list, report, k): log = defaultdict(set) answer = [0 for _ in range(len(id_list))] for incident in report: [reporter, reported] = incident.split(' ') log[reported].add(reporter) for id, reporters in log.items(): if len(reporters) < k: continue for reporter in reporters: answer[id_list.index(reporter)] +=1 return answer 정직하게 문제가 요구하는 사항..

Python/알고리즘 2023.07.17

깊이/너비 우선 탐색(DFS/BFS) Level 3 단어 변환 - python (프로그래머스)

소스 코드 from collections import deque def is_available_change(word, target): cnt = 0 for a1, a2 in zip(word, target): if a1 != a2: cnt += 1 return cnt == 1 def solution(begin, target, words): global answer answer = 100000000000000000000 if target not in words: return 0 visited = [False] * len(words) def dfs(word, depth): global answer if word == target: answer = min(answer, depth) return for index..

Python/알고리즘 2023.06.23

깊이/너비 우선 탐색(DFS/BFS) Level 2 타겟 넘버 - python (프로그래머스)

소스 코드 def dfs(index, sum, target, numbers): if index == len(numbers): if sum == target: return 1 else: return 0 return dfs(index+1, sum + numbers[index], target, numbers) + dfs(index+1, sum - numbers[index], target, numbers) def solution(numbers, target): answer = 0 answer = dfs(0, 0, target, numbers) return answer print(solution([1,1,1,1,1], 3)) 풀이 위 문제는 백준에서도 본적 있는거 같아서 쉽게 풀었던거 같다. 나올수 있는 정수의 ..

Python/알고리즘 2023.06.23

완전탐색 Level 2 전력망을 둘로 나누기 - python (프로그래머스)

소스 코드 from collections import deque def make_graph(n, wires): # 트리형태를 그래프로 표현 graph = [[] for _ in range(n+1)] for node,neighbor in wires: graph[node].append(neighbor) graph[neighbor].append(node) return graph def solution(n, wires): answer_list = [] graph = make_graph(n, wires) def bfs(graph, start, visited): count = 1 visited[start] = True queue = deque([start]) while queue: node = queue.pople..

Python/알고리즘 2023.06.23

완전탐색 Level 2 모음사전 - python (프로그래머스)

소스 코드 def solution(word): word_list = ['A', 'E', 'I', 'O', 'U'] global answer answer = 0 def dfs(_word): global answer answer += 1 if _word == word: return True if len(_word) == 5: return False for string in word_list: if dfs(_word + string): return True for i in word_list: if dfs(i): return answer return answer 풀이 해당 문제는 dfs/bfs를 접해보지 않았기 때문에 기존에는 중복순열을 사용하여 가능한 모든 단어의 조합을 구한 다음 index를 사용하여 몇번째..

Python/알고리즘 2023.06.23