자료구조 9

백준 1966번 프린터 큐 파이썬

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 내 답안 from collections import deque N = int(input()) for i in range(N): N, M = map(int, input().split()) priority = deque(list(map(int, input().split()))) ind = deque([i for i in range(N)]) cnt = 0 while priority: m = max(prio..

BOJ/Python 2024.03.08

백준 13417번 카드문자열 파이썬

https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 내 답안 from collections import deque for _ in range(int(input())): N = int(input()) card = input().split() q = deque() q.append(card[0]) st = card[0] # 기준 for i in range(1, len(card)): if st >= card[i]: q.appendleft(card[i]) ..

BOJ/Python 2022.03.09

백준 11724번 연결 요소의 개수 파이썬 DFS

https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 답안 (PyPy3) def dfs(graph, v, visited): visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited) n, m = map(int, input().split()) graph = [[] for i in range(n+1)] visi..

BOJ/Python 2022.02.06

백준 1012번 유기농 배추 파이썬 DFS

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 답안 import sys sys.setrecursionlimit(10**6) def dfs(x, y): if x = m or y = n: return False if graph[x][y] == 1: graph[x][y] = 0 dfs(x-1, y) dfs(x, y-1) dfs(x+1, y) dfs(x, y+1) return True return False for _ in range(int(input())): ..

BOJ/Python 2022.02.06

백준 1260번 DFS와 BFS 파이썬

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net from collections import deque import sys def bfs(graph, v, visited): q = deque([v]) visited[v] = True while q: v = q.popleft() print(v, end = " ") for i in graph[v]: if not visited[i]: q.append(i) visit..

BOJ/Python 2022.02.03

[자료구조] 이진 탐색 (Binary Search) 파이썬 재귀 반복문

- 이진탐색 이진 탐색은 데이터가 정렬되어 있는 배열에서 찾고자 하는 수를 찾아내는 방법이다. 데이터가 정렬되어 있는 배열을 data 라고 정하고 찾고자 하는 수를 target 이라고 하자. 배열의 중간 인덱스를 mid 로 정한다. 찾고자 하는 수 ( target ) 가 배열의 중간값 ( data[mid] ) 보다 크다면 우측 데이터 대상으로, 찾고자 하는 수 ( target ) 가 배열의 중간값 ( data[mid] ) 보다 작다면 좌측 데이터 대상으로 탐색을 한다. 찾고자 하는 수가 어디에 있냐에 따라 start 와 end의 위치를 변경해준다. 이러한 방법을 반복하여 찾고자 하는 수를 찾을 때까지 반복해 준다. 정리하면 이렇게 된다. ▷ target : 찾고자 하는 값 ▷ data : 오름차순으로 정..

Algorithm 2022.01.13

백준 10845번 큐 파이썬

https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import sys queue = [] for i in range(int(sys.stdin.readline())): x = sys.stdin.readline().split() if x[0] == 'push': x[1] = int(x[1]) queue.append(x[1]) elif x[0] == 'pop': if len(queue) > 0: print(queue[0]) del(qu..

BOJ/Python 2021.10.27

백준 10828번 스택 파이썬

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import sys stack = [] for i in range(int(sys.stdin.readline())): x = sys.stdin.readline().split() if x[0] == 'push': x[1] = int(x[1]) stack.append(x[1]) elif x[0] == 'pop': if len(stack) > 0: print(stack.pop()) el..

BOJ/Python 2021.10.26