본문 바로가기

알고리즘/Do it! 알고리즘 코딩테스트 (파이썬)

(10)
[16, 17일차] 08 그래프 : 08-3 위상 정렬, 08-4 다익스트라 함께 푼 문제 [백준 / 그래프] 1766 : 문제집 (python) 문제 설명 문제 민오는 1번부터 N번까지 총 N개의 문제로 되어 있는 문제집을 풀려고 한다. 문제는 난이도 순서로 출제되어 있다. 즉 1번 문제가 가장 쉬운 문제이고 N번 문제가 가장 어려운 문제 delicious-kimchi.tistory.com [백준 / 그래프] 1446 : 지름길 (python) 문제 설명 문제 매일 아침, 세준이는 학교에 가기 위해서 차를 타고 D킬로미터 길이의 고속도로를 지난다. 이 고속도로는 심각하게 커브가 많아서 정말 운전하기도 힘들다. 어느 날, 세준이는 이 delicious-kimchi.tistory.com 위상 정렬 사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘 시간복잡도 O(V + E) ..
[14, 15일차] 08 그래프 : 08-1 그래프의 표현, 08-2 유니온 파인드 함께 푼 문제 [백준 / 그래프] 2178 : 미로 탐색 (python) 문제 설명 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주 delicious-kimchi.tistory.com [백준 / 그래프] 20040 : 사이클 게임 (python) 문제 설명 문제 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − delicious-kimchi.tistory.com 그래프 노드와 간선으로 이루어진..
[12, 13일차] 07 정수론 함께 푼 문제 [백준 / 정수론] 1978 : 소수 찾기 (python) 문제 설명 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1, delicious-kimchi.tistory.com 소수 구하기 [백준 / 정수론] 11689 : GCD(n, k) = 1 (python) 문제 설명 문제 자연수 n이 주어졌을 때, GCD(n, k) = 1을 만족하는 자연수 1 ≤ k ≤ n 의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 n (1 ≤ n ≤ 1012)이 주어진다. 출력 GCD(n, k) = 1 delicious-kimchi.tistory.com 오일..
[10, 11일차] 06 그리디 함께 푼 문제 [백준 / 그리디] 1931 : 회의실 배정 (python) 문제 설명 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치 delicious-kimchi.tistory.com [백준 / 그리디] 2839 : 설탕 배달 (python) 문제 설명 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. delicious-kimchi.tistory.com 그리디 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알..
[9일차] 05 탐색 : 05-3 이진 탐색 함께 푼 문제 [백준 / 이진 탐색] 10815 : 숫자 카드 (python) 문제 설명 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지 delicious-kimchi.tistory.com 이진 탐색 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘. 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다. 시간 복잡도 : O(logN) 데이터가 정렬돼 있어야 함 파이썬 구현 A = [4, 8, 10, 5, 2, 7, 6, 3, 9, 1] A.sort() # **데이터 정렬** start = 0 end = len(A) - ..
[8일차] 05 탐색 : 05-1 깊이 우선 탐색, 05-2 넓이 우선 탐색 함께 푼 문제 [백준 / DFS, BFS] 2606 : 바이러스 (python) 문제 설명 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리 delicious-kimchi.tistory.com 깊이 우선 탐색 (DFS) 그래프 완전 탐색 기법 중 하나로, 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘 시간 복잡도 : O(V + E) 재귀함수 또는 스택으로 구현 가능 그래프는 보통 인접 리스트로 나타냄 인접 리스트 : 그래프를 표현하기 위한 방법 중 하나. 그래프의 한 꼭짓점에서 연결되..
[7일차] 04 정렬 : 04-5 병합 정렬, 04-6 기수 정렬 병합 정렬 (Merge Sort) 파이썬 구현 def merge_sort(arr): if len(arr) == 1: return arr mid = len(arr) // 2 left = arr[:mid] right = arr[mid:] left_arr = merge_sort(left) right_arr = merge_sort(right) return merge(left_arr, right_arr) def merge(left, right): i, j = 0, 0 #투포인터 sorted_arr = [] while i < len(left) and j < len(right): if left[i] < right[j]: sorted_arr.append(left[i]) i += 1 else: sorted_arr.app..
[6일차] 04 정렬 : 04-3 삽입 정렬, 04-4 퀵 정렬 삽입 정렬 파이썬 구현 for i in range(1, len(array)): for j in range(i, 0, -1): if array[j] A[j+1]: A[j], A[j+1] = A[j+1], A[j] flag = False if flag: #swap이 한 번도 발생하지 않았으므로 종료 break 버블 정렬은 정렬되지 않은 영역에서 계속 swap이 발생하..

반응형