본문 바로가기

알고리즘 문제/자료구조&알고리즘19

DFS/BFS 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 from collections import deque # 특정 거리의 도시 찾기 # 모든 간선의 거리는 1이라는 조건 때문에 BFS(deque) n,m,k,x = map(int,input().split()) node = [[] for _ in range(n+1)] for i in range(m+1): a,b = map(int,input().split()) node[a].append(b) # 모든 도시에 대한 최단거리 초기화 distance = [-1] * (n + 1) distance[x] = 0 # 출발 도시까지의 거리는 0으로.. 2020. 10. 25.
구현 기출 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 럭키 스트레이트 s = 123402 data = str(s) m = int(len(data) // 2) sum_left = 0 sum_right = 0 for i in range(0,m): sum_left+= int(data[i]) for i in range(m,len(data)): sum_right += int(data[i]) print(sum_left) print(sum_right) if sum_left == sum_right : print('LUCKY') else: print('READY') cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 문자열 재정렬 st = 'K1KA5C.. 2020. 10. 24.
그리디 기출 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 모험가 길드 n = 5 guild = [2,3,1,2,2] guild.sort() result = 0 count = 0 for i in guild: count +=1 if count>= i: result +=1 count = 0 print(result) cs 1 2 3 4 5 6 7 8 9 10 11 # 곱하기 혹은 더하기 s = '02984' sum = int(s[0]) for i in range(1,len(s)): num = int(s[i]) if num 2020. 10. 24.
기타알고리즘(리스트) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 투 포인터 알고리즘 n = 5 # 데이터의 개수 N m = 5 # 찾고자 하는 부분합 M data = [1, 2, 3, 2, 5] # 전체 수열 count = 0 interval_sum = 0 end = 0 # start를 차례대로 증가시키며 반복 for start in range(n): # end를 가능한 만큼 이동시키기 while interval_sum 2020. 10. 24.
기타 알고리즘(소수) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 소수 import math # 소수 판별 함수 def is_prime_number(x): # 2부터 x의 제곱근까지의 모든 수를 확인하며 for i in range(2, int(math.sqrt(x)) + 1): print(int(math.sqrt(x))) # x가 해당 수로 나누어떨어진다면 if x % i == 0: return False # 소수가 아님 return True # 소수임 print(is_prime_number(4)) # 4는 소수가 아님 print(is_prime_number(8)) # 7은 소수임 cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #에라토스테네스의 체 impor.. 2020. 10. 24.
그래프 이론 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 # 특정 원소가 속한 집합을 찾기 def find_parent(parent, x): # 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: return find_parent(parent, parent[x]) return x # 특정 원소가 속한 집합을 찾기 def find_parent(parent, x): # 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: parent[x.. 2020. 10. 24.