자료구조(52)
-
백준 온라인 저널, 우선순위 큐, 자료구조/2075번 : N번째 큰 수(파이썬) / 백준 골드 문제
문제 https://www.acmicpc.net/problem/2075 문제 정의 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. 출력 첫째 줄에 N번째 큰 수를 출력한다. 예제..
2021.06.25 -
백준 온라인 저널, 우선순위 큐, 자료구조/11286번 : 절대값 힙(파이썬)
문제 정의 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 입력에서 0이 주어진 회수만큼 답을 출력한다. 만약 배열이 비어 있는 경우인데 절댓값이 가장 작은 값을 출력하라고 한 경우에는 0을 출력하면 된다. 출력 한 줄에 하나씩 N줄에 걸쳐 수빈이의 동생이 말해야하는 수를 순서대로 출력한다. 예제 입력 1 18 1 -1 0 0 0 1 1 -1 -1 2 -2 0 0 0 0 0 0 0 예제 출력 1 -1 1 0 -1 -1 1 1 -2 2..
2021.06.25 -
백준 온라인 저널, BFS/1697번 : 숨바꼭질(파이썬)
문제 정의 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오 . 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 예제 입력 1 5 17 예제 출력 1 4 접근 방법 1. 현재..
2021.06.25 -
이코테 2021, BFS 개념 정리 (파이썬)
BFS - 너비 우선 탐색이라고도 부르며, 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. - 큐 자료구조를 사용한다. BFS의 동작과정 0. 그래프를 준비한다. (해당 강의에서는 번호가 낮은 인접 노드 순으로 방문하는 기준을 세움) 1. 탐색 시작 노드를 큐에 삽입하고 방문처리한다. 2. 큐에서 노드를 꺼낸 뒤 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리한다. 3. 더이상 2번의 과정을 수행할 수 없을 때까지 반복한다. 코드 - 위의 그래프를 다음과 같이 코드로 작성할 수 있다. from collections import deque # 2차원 리스트 graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4],..
2021.06.05