[ 이코테 ] 정렬 알고리즘
▶ 선택 정렬 ( 선택 정렬 ) ▶ 삽입 정렬 ( 삽입 정렬 ) ▶ 퀵 정렬 쭉 오른쪽으로 피벗보다 큰 값을 찾고, 왼쪽으로 작은값을 찾다가 엇갈리는 경우가 생기게 된다! (왼쪽에서 피벗보다 작은값을 만나고 오른쪽에서 피벗보다 큰 값을 만날 때) 이 경우는 피벗과 작은 데이터의 위치를 변경해준다 array = [5, 7, 9, 3, 1, 6, 2, 4, 8] def quick_sort(array, start, end): if start >= end: return pivot = start left = start + 1 right = end while(left right): array[right], array[pivot] = array[pivot], array[right] else: array[left], ..
[ 이코테 ] DFS & BFS 알고리즘
▶ Stack & Queue ▶ DFS def dfs(graph,v,visited): visited[v] = True print(v, end=' ') for e in graph[v]: if not visited[e]: dfs(graph,e,visited) #각 노드가 연결된 정보 (노드는 보통 1부터 사용되기 때문에 0번째는 비워둔다.) #2차원 리스트 graph = [ [], [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], [2,6,8], [1,7] ] #각 노드가 방문됐는지 확인하기 위함 #보통 노드가 1부터 시작하고, 0번째는 사용하지 않기 때문에 노드는 8개지만 9개로 만들어준다 visited = [False] * 9 dfs(graph, 1, visited) ▶ BF..
[ 이코테 ] 구현 알고리즘
▶ 상하좌우 n = int(input()) plans = input().split() x, y = 1, 1 dx=[0,0,-1,1] dy=[-1,1,0,0] move_type=['L','R','U','D'] for plan in plans: for i in range(len(move_type)): if plan == move_type[i]: nx = dx[i] + x ny = dy[i] + y # 공간을 벗어나는 경우 무시 if nx n or ny > n: continue x, y = nx, ny print(x, y) ▶ 시각 h = int(input()) count = 0 for i in range(h + 1): for j in range(60): for k in..