[백준 1260 / Python(파이썬)] DFS와 BFS
·
etc/Algorithm study
문제 풀이 DFS의 경우 재귀 함수를 이용하여 그래프를 탐색한다. BFS의 경우 queue를 이용하여 그래프를 탐색한다. # BOJ1260_DFS와BFS from collections import deque n, m, v = map(int, input().split()) graph = [[] for _ in range(n+1)] visited = [False for _ in range(n+1)] for _ in range(m): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) for i in range(len(graph)): graph[i].sort() def dfs(graph, start): global dfs_answer,..
[백준 1197 / Python(파이썬)] 최소 스패닝 트리
·
etc/Algorithm study
[백준 1197 / Python(파이썬)] 최소 스패닝 트리 문제 풀이 크루스컬 알고리즘(Kruskal Algorithm) 이용 알고리즘을 이용하여 가중치의 크기를 구한 뒤 print해준다. 틀린 풀이: 시간 초과 #최소 스패닝 트리 import sys V, E = map(int, sys.stdin.readline().split()) arr = [list(map(int, sys.stdin.readline().split())) for _ in range(E)] arr.sort(key=lambda x: x[2]) uf = [i for i in range(V+1)] #union-find def kruskal(): global V, E, arr, uf mst = 0 #최소 스패닝 트리의 가중치를 담음 for u..
[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링
·
etc/Algorithm study
[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링 문제 풀이 이 문제는 그리드 알고리즘이므로 문제를 풀기 위한 기준을 나누어줬다. 1. 멀티탭에 이미 전기용품이 꽂혀있을 때: continue 2. 멀티탭에 구멍이 남아있을 때: 전기용품을 꽂아주고 continue 3. 멀티탭에 구멍이 없어 전기용품을 바꿔줘야할 때: 3-1 남은 순서 중에 계속 써야하는 전기용품이 없을 때: 멀티탭에서 뺄 전기용품의 위치를 바꾸어준 뒤 break 3-2 계속 전기용품을 써야할 때: 이후 순서에서 써야하는 전기용품 중 가장 멀리있는 것으로 위치를 바꾸고, 멀티탭에서 뺄 전기용품의 위치를 바꾸어준다. 틀린 풀이 idx와 farN의 초기화가 진행되지 않아 27%에서 틀렸다. n, k = map(int, input().s..
[백준 14179/파이썬(Python)] 빗물
·
etc/Algorithm study
[백준 14179/파이썬(Python)] 빗물 문제 풀이 2차원 세계에서 빈공간과 벽을 0과 1로 나누어줌 2차원 세계의 가장 바닥부터 왼쪽에서 오른쪽으로 벽인지 아닌지 검사 temp라는 배열을 만들어준 뒤 왼쪽 벽과 오른쪽 벽에 대한 가로 좌표를 저장 temp의 길이가 총 2가 되면(왼쪽 벽이 나타난 뒤 오른쪽 벽이 나타나면) 벽이 붙어있는지 검사 붙어있지 않으면 빗물이 고이는 부분을 0에서 2로 수정하고 빗물의 양을 count 해줌 # 빗물 h, w = map(int, input().split()) arr = list(map(int, input().split())) m = [[1] * w for _ in range(h)] temp = [] #왼쪽의 벽 가로 좌표와 오른쪽에 존재하는 벽 가로 좌표 저장..
CH 06. 스택(Stack)
·
etc/Algorithm study
알고리즘 / 기술면접 완전 정복 올인원 패키지 Online. - 데이터를 제한적으로 접근할 수 있는 구조- 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조- 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조​​Stack의 용어 - push(): 스택에 데이터를 넣는 기능- pop(): 스택에서 데이터를 꺼내는 기능# 재귀 함수def recursive(data): if data 자료 구조 스택의 장단점스택은 단순하고 빠른 성능을 위해 사용된다.- 장점 1. 구조가 단순해 구현이 쉬움 2. 데이터 저장/읽기 속도가 빠름- 단점 1. 데이터 최대 개수를 미리 정해야 한다. 2. 저장 공간의 낭비가 발생할 수 있다. 파이썬 리스트 기능에서 메소드 제공data_stack = list()data..
Ch 05. 큐(Queue)
·
etc/Algorithm study
- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조.- FIFO(First-In, First-Out) 또는 (Last-In, Last-Out) 방식이다.- 스택과 꺼내는 순서가 반대​출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/Queue의 용어 - Enqueue: 큐에 데이터를 넣는 기능 - Dequeue:큐에서 데이터를 꺼내는 기능​파이썬에서 queue 라이브러리를 지원해준다.Queue(), LifoQueue(), PriorityQueue() 등 다양한 라이브러리 제공(프로그램에 따라 적합한 자료 구조를 사용하자) - Queue(): 가장 일반적인 큐 자료 구조 - Lif..