본문 바로가기

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

이진 탐색 1 2 3 4 5 6 7 8 # 순차 탐색 소스 코드 구현 def sequential_search(n,target,array): # 각 원소를 하나씩 확인하며 for i in range(n): # 현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: return i +1 #현재의 위치 반환(인덱스는 0부터 시작하므로 1더하기) Colored by Color Scripter cs 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 # 이진 탐색 소스코드 구현(재귀 함수) def binary_search(array, target, start, end): if start > en.. 2020. 10. 22.
정렬 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 위에서 아래로 (내림차순) # N을 입력받기 n = int(input()) # N개의 정수를 입력받아 저장 array =[] for i in range(n): array.append(int(input())) # 파이썬 기본 정렬 라이브러리를 이용하여 정렬 수행 array = sorted(array, reverse=True) # 정렬이 수행된 결과를 출력 for i in array: print(i, end=" ") cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 성적이 낮은 순서로 학생 출력하기 # 1 2020. 10. 22.
정렬 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # 선택 정렬 코드 array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if(array[min_index]>array[j]): min_index =j array[i], array[min_index] = array[min_index] , array[i] # 스와프 print(array) # 삽입 정렬 코드 for i in range(len(array)): for j in range(i, 0, -1): if array[j] =end: # 원소가 .. 2020. 10. 21.
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 37 # 음료수 얼려 먹기 n,m = map(int,input().split()) graph =[] for i in range(n): graph.append(list(map(int,input()))) print(graph) #DFS 로 특정한 노드를 방문한 뒤에 연결된 모든 노드들도 방문 def dfs(x,y): # 주어진 범위를 벗어나는 경우에는 즉시 종료 if x=n or y=m: return False; # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == 0: graph[x][y] = 1 # 상, 하, 좌.. 2020. 10. 21.
DFS(Depth First Search)/BFC(Breadth First Search) 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 def recursive(i): if i == 100: return print(i,'번째 재귀함수에서', i+1, '번째 재귀함수를 호출') recursive(i+1) print(i,'번째 재귀함수를 종료') # recursive(1) def factorial(n): if n 2020. 10. 21.
구현 상하좌우(좌표문제는 표를한번그려보자 x,y 증가폭이헷갈림) 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 # N 입력받기 n = int(input()) x, y = 1, 1 plans = input().split() # L, R, U, D에 따른 이동 방향 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] move_types = ['L', 'R', 'U', 'D'] # 이동 계획을 하나씩 확인 for plan in plans: # 이동 후 좌표 구하기 for i in range(len(move_types)): if plan == move_types[i]: nx = x + dx[i] ny = y + dy[i] # 공간.. 2020. 10. 19.