Programmers39 [프로그래머스 Lv.2] 타겟 넘버 # BFS from collections import deque def solution(numbers, target): answer = 0 queue = deque() queue.append((numbers[0],0)) queue.append((-numbers[0],0)) while queue: v, index = queue.popleft() index += 1 if index < len(numbers): queue.append((v+numbers[index],index)) queue.append((v-numbers[index],index)) else: if v == target: answer += 1 return answer #DFS def solution(numbers, target): global .. 2023. 8. 2. [프로그래머스 Lv.3] 네트워크 def solution(n, computers): answer = 0 graph = [[] for i in range(n)] visited = [False]*n for i,row in enumerate(computers): for j,value in enumerate(row): if i != j and value == 1: graph[j].append(i) def dfs(n): if visited[n]: return False visited[n] = True for i in graph[n]: if not visited[i]: dfs(i) return True for i in range(n): if dfs(i): answer += 1 return answer 이번 문제는 컴퓨터의 개수 n과 연결에 대한 정.. 2023. 7. 31. [프로그래머스] 연속된 수의 합 def solution(num, total): answer = [] multiple = 0 if num%2 == 0: start_num = num//2 answer = [i for i in range(-(num//2)+1, num//2+1)] else: start_num = 0 answer = [i for i in range(-(num//2),num//2+1)] while(1): if start_num == total: answer = [i+multiple for i in answer] break start_num += num multiple += 1 return answer 이번 문제는 주어진 num개의 연속된 수의 합이 total이 되도록 하는 연속된 수로 이루어진 배열을 구하는 문제이다. 처음에는 .. 2023. 7. 23. [프로그래머스] 옹알이(2) def solution(babbling): answer = 0 prefix_list = ['a','y','w','m'] global current current = '' def check(string): global current list_str = list(string) index = 0 while(index 2023. 7. 22. [프로그래머스] 문자열 나누기 def solution(s): answer = [] string = s while(string != ''): x = string[0] list_str = list(string) count_x = 0 count_not_x = 0 index = 0 for i,value in enumerate(list_str): if value == x: count_x += 1 else: count_not_x += 1 if count_x != 0 and count_x == count_not_x: index = i break index = i answer.append(list_str[:index+1]) string = ''.join(list_str[index+1:]) return len(answer) 이번 문제는 주어진 조건대.. 2023. 7. 21. [프로그래머스] 문자열 밀기 def solution(A, B): def move(string): list_str = list(string) str_len = len(list_str) new_list = [list_str[-1]] + list_str[:-1] print(new_list) return ''.join(new_list) available = False check_str = A answer = 0 for i in range(len(A)): if check_str == B: available = True break check_str = move(check_str) answer += 1 if available: return answer else: return -1 이번 문제는 주어진 문자열 A를 오른쪽으로 밀면서 B를 만들 수 .. 2023. 7. 21. 이전 1 2 3 4 5 6 7 다음