Algorithm/스택&큐&덱&힙32 [백준] 1021번 회전하는 큐 사용 언어 - Python3 10866번: 덱 (실버4, 큐) 문제 ★큐 문제★ 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 정답 deque([]) 사용하기 (코드 풀이) 위치값이 큐의 첫번째 원소와 같으면 큐 앞에 있는 원소를 pop한다. q의 i번째 위치값 q 길이의 절반 인 경우, 맨 오른쪽의 원소를 q의 맨 앞으로 appendleft 한다. q의 첫.. 2023. 1. 22. [백준] 10866번 덱 사용 언어 - Python3 10866번: 덱 (실버4, 큐) 문제 ★큐 문제★ 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 정답 deque([]) 사용하기 (코드 풀이) 큐의 맨 앞(왼쪽)에 push => q. appendleft 큐의 맨 앞(왼쪽에 pop => q.popleft q는 앞선 명령어들로 길이가 계속 달라지므로 인덱싱할 때 주의해야한다. 가장 오른쪽 값 출력 => d[len(d)-1] # 정답 import sys from collections import deque d = de.. 2023. 1. 22. [백준] 1966번 프린터 큐 사용 언어 - Python3 1966번: 프린터 큐 (실버3, 큐) 문제 ★큐 문제★ 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 정답 k-1명을 popleft() 하면서 바로 append해주는 deque([]) 문제 (코드 풀이) 1. 변수 선언 n 문서의 개수 / n 문서에서 m이 있는 인덱스 찾기! 가장 중요도가 높은, 큰 숫자를 best에 입력한다. q의 가장 왼쪽에 있는 숫자를 pop하고 front에 입력한다. 2. 맨 왼쪽의 숫자(front) 와 가장 큰 숫자(best)를 비교한다. m앞에 있는 숫.. 2023. 1. 22. [백준] 11866번 요세푸스 문제0 사용 언어 - Python3 11866번: 요세푸스 문제 0 (실버5, 큐) 문제 ★큐 문제★ 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 정답 k-1명을 popleft() 하면서 바로 append해주는 deque([]) 문제 (코드 풀이) popleft()를 k번째 전까지 총 k-1번 진행한다. popleft() 된걸 바로 append하면서 뒤에 순차적으로 추가해준다. 마지막 k번째도 popleft()로 삭제하면서 그 값을 정답에 append한다. 마지막까지 한 원소만 남았을 때까지 while문을 진행한다. 마지막 한 원소만 제외하고 answer를 출력한다. answer의 마지막 원소는 따.. 2023. 1. 22. [백준] 2164번 카드2 사용 언어 - Python3 2164번: 큐 2 (실버4, 큐) 문제 ★큐 문제★ 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 정답 deque([]) 문제 (코드 풀이) 1. 시간제한 & queue.popleft() 파이썬 라이브러리 중 collections의 deque로 q를 구현하기 import sys from collection import deque n = int(sys.stdin.readline()) q = deque([]) pop 명령어가 입력되었을 때, 큐에서 가장 앞(왼쪽)에 있는 정수를 빼.. 2023. 1. 22. [백준] 18258번 큐 2 사용 언어 - Python3 18258번: 큐 2 (실버4, 큐) 문제 ★큐 문제★ 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 정답 deque([]) 문제 (코드 풀이) 1. 시간제한 import sys n = int(sys.stdin.readline()) from collection import deque deque로 queue를 구현한다. queue = deque([]) 2. queue.popleft() pop 명령어가 입력되었을 때, 큐에서 가장 앞(왼쪽)에 있는 정수를 빼고.. 2023. 1. 21. [백준] 1874번 스택 수열 사용 언어 - Python3 1874번: 스택 수열 (실버2, 스택) 문제 ★스택 문제★ 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 정답 스택 문제 !! (코드 풀이) 1. stack 쌓기 cur 변수를 이용해서 입력값인 num과 같아질때까지 1씩 증가시키며 빈 리스트 stack에 append해준다. cur == num 인 경우, stack의 마지막 원소인 stack[-1]은 num과 같아질 것 이고, 이 때 pop을 진행.. 2023. 1. 20. [백준] 9012번 괄호 사용 언어 - Python3 9012번: 괄호 (실버4, 스택) 문제 ★스택 문제★ 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 정답 간단한 스택 문제 !! (내 코드 풀이) 열린 괄호를 스택에 넣어, 닫힌 괄호가 있으면 열린 괄호 한개를 빼주는 형태. 열린 괄호인 경우, 스택에 append / 닫힌 괄호인 경우, 스택에 pop 닫혔으나 스택에 아무것도 없는 경우 ans = False로 하여, 더이상의 for문을 진행하지 않고 break. 최종적으로 스택에 아무것도 안남아있고.. 2023. 1. 20. [백준] 10773번 제로 사용 언어 - Python3 10773번: 제로 (실버4, 스택) 문제 ★스택 문제★ 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 정답 간단한 스택 문제 !! 스택을 활용해야 한다는 것을 알고, 문제를 풀어서 너무 쉽게 맞췄어요. 문제에 대해 아무런 정보가 없는 상태에서도 스택을 사용해야한다고 알게 될 때까지 열심히 파이팅! :) (내 코드 풀이) 스택의 "선입후출" 구조만 이해하면 되는 문제 # 정답 k = int(input()) stack = [] for i in ran.. 2023. 1. 20. [백준] 10828번 스택 사용 언어 - Python3 10828번: 스택 (실버4, 스택) 문제 ★스택 문제★ 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 정답 간단한 스택 문제 !! 이제 스택은 마스터한것 같아서 기분이 매우 좋네요 :) (내 코드 풀이) 스택의 "선입후출" 구조만 이해하면 되는 문제 빈 리스트 stack을 선언한다. 리스트의 append(추가), pop(가장 마지막으로 들어온 원소 삭제)을 이용해서 각각의 명령문에 대한 코드를 작성한다. # 정답 n = int(input()) command = .. 2023. 1. 20. 이전 1 2 3 4 다음