크게 생각하고, 목표를 높게 잡고, 대담하게 행동하라.

“언젠가는 목표에 이를지도 모르는 단계를 밟는 것으로는 언제나 실패한다. 모든 단계가 그 자체로 목표인 동시에 목표로 이르는 단계여야한다.” - 괴테

728x90

파이썬 24

[Python] 백준 5430 - AC

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net deque에 대해서 알아볼 수 있는 문제다. 처음에는 R을 받을 때마다 q.reverse()를 통해 역순정렬을 해서 시간초과가 나왔다. cnt 변수를 하나 만들어서 R을 받을 때마다 1씩 증가시키며 마지막에 한 번만 reverse를 해주면 되는 문제였다. 이게 핵심이었던 것 같고, 공부하면서 reverse(), rotate(), 리스트와 덱의 차이점 등을 알 수 있어서 좋은 문제라 생각한다. 끗 from collections import deque de..

[Python] 백준 2887 - 행성터널

https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 크루스칼 문제다. 일반적인 크루스칼 개념을 적용시켜서 푸는 것은 동일하다. 각 노드의 x축 y축 z축 차이를 탐색한 뒤에 절댓값이 가장 작은 가중치를 선택하면 된다. 그렇다고 모든 노드를 하나씩 비교해보면 시간초과가 난다. 따라서 간선의 가중치와 노드를 저장한 뒤에 우선순위 정렬을 시행한 뒤 비교해줘야한다. 정리해보면 1. x축 y축 z축의 리스트를 하나 만든다. ..

[Python] 크루스칼 알고리즘 baseline

최소신장트리(MST, MinimumSpanningTree)를 구하는 알고리즘 중 하나이다. 하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 없어야하고 간선의 가중치가 최소가 되는 트리를 의미한다. 아래의 그림이 바로 그런 예시다. 알고리즘은 대략적으로 다음과 같다. 1. 가장 작은 가중치의 간선 탐색 2. 사이클이 생기지 않는 노드인지 확인 3-1. 사이클이 생긴다면 pass 3-2. 사이클이 생기지 않으면 해당 간선 리스트에 저장 아래 코드는 MST의 최소 가중치를 구하는 코드다. # 특정 원소가 속한 집합 찾기 def find_parent(parent, x): # 루트 노드가 아니라면, 루트 노드를 찾을 때까지 재귀적으로 호출 if parent[x] != x: parent[x] = find_..

[Python] 백준 16928 - 뱀과 사다리 게임

https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 간단한 BFS 문제다. 큐에는 (현재위치, 주사위를 굴린 횟수)를 저장한다. 쉬운 문제라고 생각한다. 작년까지만 해도 실버 문제만 주구장창 풀었는데 알고리즘을 본격적으로 배운 이후 지금은 골드도 무섭지 않다. 물론 골드 중에도 못푸는 문제는 널리고 널렸지만 그래도 예전처럼 쫄아서 넘기진 않으니ㅋㅋㅋㅋㅋ 지금은 플래 문제들이 큰 벽처럼 보이지만 이것도 ..

728x90