Computer Science/Algorithms
-
[자료구조][BJ 1966] 프린터 큐Computer Science/Algorithms 2025. 1. 17. 14:30
https://www.acmicpc.net/problem/1966 내 방식의 풀의는 오답노트를 하며 거의 못봤다. 내 방식은 dequeue 보다 시간, 메모리 비용이 덜 든다. 대부분 dequeue 를 이용하거나, enmuerate 를 사용하지 않고 1차원 리스트로 풀던데,enmuerate 를 사용하면 보다 직관적으로 풀 수 있다. 1. enmuerate 를 이용하여, 문서 인덱스와 가중치를 한 쌍으로 저장한다. 2. 가중치의 최댓값을 비교하여, 최댓값인 경우 pop, 그렇지 않은 경우 append(pop) 을 한다.3. 만약 최댓값이어서 pop 을 하는 경우 해당 값의 인덱스와 찾고자 하는 인덱스가 일치하는 경우,4. 탐색을 마치고 pop 한 횟수를 출력한다. key= lambda 를 이용하여 ..
-
[자료구조][BJ 2346] 풍선 터뜨리기Computer Science/Algorithms 2025. 1. 16. 23:02
https://www.acmicpc.net/problem/2346 파이썬 deque 와 rotate 를 쓰면 쉽게 풀 수 있다. rotate 패키기를 잘 몰라처음에는 deq.append(deq.popleft()) 로 구현했다. 참.. 파이썬은 패키지 싸움인듯하다. import sysfrom collections import dequen = int(input())deq = deque(enumerate(map(int, input().split())))arr = []while(deq): idx, tmp = deq.popleft() arr.append(idx+1) if tmp
-
[자료구조][BJ 2164] 카드2Computer Science/Algorithms 2025. 1. 14. 12:04
https://www.acmicpc.net/problem/2164 이 문제는 큐(Queue) 자료 구조를 활용하여 해결할 수 있다. 큐는 FIFO(First In, First Out) 특성을 가지며, 문제에서 제시한 규칙을 구현하기에 적합하다. 문제 설명카드 NN장이 1부터 NN까지 번호가 매겨져 있으며, 처음에는 카드가 순서대로 쌓여 있다.다음 두 동작을 카드가 한 장 남을 때까지 반복한다.제일 위에 있는 카드를 버린다.그다음 제일 위에 있는 카드를 제일 아래로 옮긴다.카드가 한 장 남았을 때, 그 카드를 출력한다.문제 해결 방법이 문제는 큐 자료 구조를 활용하여 다음과 같은 방식으로 해결할 수 있다.11부터 NN까지의 번호를 큐에 삽입한다.큐가 한 장 남을 때까지 다음을 반복한다.큐의 첫 번째 요소..
-
[자료구조][BJ 1158] 요세푸스 문제Computer Science/Algorithms 2025. 1. 14. 11:34
https://www.acmicpc.net/problem/1158 요세푸스 문제는 컴퓨터 과학에서 자주 언급되는 고전적인 문제이다. 이 문제는 원형 구조에서 사람들을 순서대로 제거하며 진행하는 과정으로, 최종적으로 제거된 순서를 구하는 문제이다.1번부터 NN번까지 NN명의 사람이 원형으로 앉아있는 상황이다. 이때 양의 정수 KK가 주어지며, KK번째 사람을 제거하는 규칙을 따른다. 한 사람이 제거되면 남은 사람들로 이루어진 원형 구조에서 같은 규칙으로 반복한다. 모든 사람이 제거될 때까지 이 과정을 계속하며, 제거된 순서를 요세푸스 순열이라고 한다.예를 들어 N=7N = 7, K=3K = 3인 경우를 살펴보자.초기 상태는 [1,2,3,4,5,6,7][1, 2, 3, 4, 5, 6, 7]이다.K=3K =..
-
[자료구조][BJ 18258] 큐 2Computer Science/Algorithms 2025. 1. 12. 22:13
https://www.acmicpc.net/problem/10828 해당 문제는 스택을 구현하는 문제다. https://notstoneseok.tistory.com/20 [자료구조][BJ 18258] 큐 2https://www.acmicpc.net/problem/18258 그냥 리스트로 시도 n = int(input())arr = []for i in range(n): cmd = input() if cmd =='front': print(arr[0]) continue elif cmd =='back': print(arr[-1]) continue elif cmd == 'size': print(len(arr)) continnotstoneseok.tistory.com 이전에 풀었던 큐2 구현 코드를 이용하여..
-
[자료구조][BJ 18258] 큐 2Computer Science/Algorithms 2025. 1. 12. 21:34
https://www.acmicpc.net/problem/18258 그냥 리스트로 시도 n = int(input())arr = []for i in range(n): cmd = input() if cmd =='front': print(arr[0]) continue elif cmd =='back': print(arr[-1]) continue elif cmd == 'size': print(len(arr)) continue elif cmd == 'pop': if(len(arr) 런타임 에러.. 그래서 deque 이용하여 import sysfrom collections import dequen..
-
[자료구조] 힙(heap)Computer Science/Algorithms 2023. 3. 10. 15:34
이번학기 알고리듬 분석 수업을 듣고 슴다..이번에 힙 구현 과제가 나와 작년에 듣던 자료를 다시 찾아보며 공부하다 정리했습니다. 자료구조 힙이란?완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조다.여러개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조 중복된 값을 허용한다 heap : 다음을 만족하는 Binary TreeComplete binary treeMax-tree : Parent의 key값이 children의 key 값보다 크다. 즉, 어떤 node의 key 값은 모든 descendents의 key 값보다 크다. 힙의 특징Heap의 표현 일반적으로 array를 사용하여 표현 Complete binary tree이므로 연속으로 채워진다.힙의 종류최대 힙(ma..
-
[자료구조] [BJ10828] 스택Computer Science/Algorithms 2023. 2. 7. 22:41
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 🗂 문제 설명 push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 ..