알고리즘
-
[큐] 1966 프린터 큐백준 Online Judge 2022. 1. 19. 21:09
백준 문제 1966 난이도: 하 문제 유형: 큐, 구현, 그리디 enumerate 함수 설명 순서가 있는 자료형 (e.g. 리스트, 튜플, 문자열)을 입력 받아서 인덱스 값과 함께 보여준다. >>> for i, name in enumerate(['kim', 'han', 'park']): print(i, name) 0 kim 1 han 2 park 문제 풀이 코드 test_case = int(input()) for _ in range(test_case): n, m = list(map(int, input().split(' '))) queue = list(map(int, input().split(' '))) # 튜플 형식으로 넣는다. [2, 1, 4, 3] -> [(2, 0), (1, 1), (4, 2), (..
-
[백준] 2751 수 정렬하기 2백준 Online Judge 2021. 8. 31. 17:08
GitHub - DAWUNHAN/Algorithms-and-DataStructure: Algorithms and DataStructure with Python Algorithms and DataStructure with Python. Contribute to DAWUNHAN/Algorithms-and-DataStructure development by creating an account on GitHub. github.com 문제 해설 n개의 숫자를 입력 받은 뒤, 순서대로 출력하라. 데이터 개수가 최대 1,000,000개 일 때, 시간 복잡도 o(NlogN)의 정렬 알고리즘을 이용해야 한다. 병합 정렬을 직접 구현하는 방법 def merge_sort(array): if len(array)
-
[백준] 1074 z (재귀 함수)백준 Online Judge 2021. 8. 31. 15:56
문제 해설 난이도 : 중 문제 유형 : 재귀 함수 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net def solve(n, x, y): global result if n == 2: if x == X and y == Y: print(result) return result += 1 if x == X and y+1 == Y: print(result) return result += 1 if x+1 == X and y == Y: print(result) return result += 1 if x+1 == X a..
-
[백준] 1074 z (재귀 함수)백준 Online Judge 2021. 8. 31. 15:51
문제 해설 난이도 : 중 문제 유형 : 재귀 함수 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net def solve(n, x, y): global result if n == 2: if x == X and y == Y: print(result) return result += 1 if x == X and y+1 == Y: print(result) return result += 1 if x+1 == X and y == Y: print(result) return result += 1 if x+1 == X a..
-
[백준] 2747 피보나치 수열백준 Online Judge 2021. 8. 31. 15:26
2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 해설 0과 1로 시작한다. 그 다음부터는 바로 앞 두 피보나치 수의 합이 된다. 기본적인 재귀 함수를 이용하면 시간 초과로 풀 수 없다. 입력 받은 수가 n 일 경우, n 번째 피보나치 수열 수를 구하라. 0 1 1 2 3 5 8 a b a b = (a+b) a b = (a+b) a b = (a+b) .. .. n = int(input()) a, b = 0, 1 while n > 0: a, b = b, a+b n -= 1 p..
-
[백준] 10989 수 정렬하기백준 Online Judge 2021. 8. 30. 21:22
10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해설 수 정렬 하기 (N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.) 계수 정렬 알고리즘 (Counting Sort) : 수의 범위가 제한적일 때 사용 가능하다. 각 각의 인덱스를 값으로 보는 정렬 알고리즘. 데이터가 등장한 횟수를 세는 알고리즘. 데이터 갯수가 많을 때는 sys.stdin.readline()을 이용한다. 참고로, 쥬피터 노트북에서는 sys.stdin.readline() 사용 불가다. import sys n = int(sys.std..
-
[백준] 11650 좌표 정렬하기백준 Online Judge 2021. 8. 30. 21:01
11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 해설 x 좌표 순서대로 정렬 하되, x 값이 같은 경우 y을 비교하여 정렬한다. n = int(input()) array = [] for _ in range(n): x, y = map(int, input().split(' ')) array.append((x, y)) # 기본적으로 sorted 함수 내에서, x가 같은 경우 y 크기 순으로 정렬하는 내용이 포함되어 있다. array = sorted(array..
-
[백준] 2750 수 정렬백준 Online Judge 2021. 8. 27. 15:26
문제 해설 처음 입력된 수는 숫자 개수이다. 2~n줄에는 숫자가 입력된다. 숫자를 작은 숫자부터 순서대로 출력한다. 선택 정렬로 해결하기 남은 원소 중에서 가장 작은 숫자를 앞으로 넣는다. n = int(input()) num_list = list() for i in range(n): num_list.append(int(input())) for i in range(n): min_idx = i for j in range (i+1, n): if num_list[min_idx] > num_list[j]: min_idx = j num_list[i], num_list[min_idx] = num_list[min_idx], num_list[i] for i in range(n): print(num_list[i]) 파이..