본문 바로가기

Coding Test/Step16. 스택, 큐, 덱

(11)
[Java] 11단계. queuestack [24511번] https://www.acmicpc.net/problem/24511예제 입력140 1 1 01 2 3 432 4 7예제 출력14 1 2예제 입력251 1 1 1 11 2 3 4 531 3 5예제 출력21 3 5문제 접근입력 첫째 줄 : queuestack의 자료 구조 개수 N (1 둘째 줄 : 길이 N의 수열 A, 0 = Queue, 1 = Stack 셋째 줄 : 길이 N의 수열 B, Bi는 i번 자료구조에 들어가있는 원소 (1 넷째 줄 : 삽입할 수열의 길이 M (1 다섯째 줄 : 길이 M의 삽입할 원소 수열 C (1 출력 수열 C의 원소를 차례대로 queuestack에 삽입했을 때 리턴 값을 한 줄에 출력문제 해결문제를 해석하면 다음과 같음첫째 줄 : 총 4개의 자료구조둘째 줄 : Queue(0)  ..
[Java] 10단계. 풍선 터뜨리기 [2346번] https://www.acmicpc.net/problem/2346예제 입력153 2 1 -3 -1예제 출력11 4 5 3 2문제 접근규칙1 ~ N번까지의 풍선이 원형으로 놓임 각 풍선에는 종이가 들어있음 ( -N 처음에는 1번 풍선을 터트림 종이를 꺼내 그 종이에 적힌 값만큼 이동하여 풍선을 터뜨림 양수 = 오른쪽 / 음수 = 왼쪽 입력 첫째 줄 : 자연수 N(1 둘째 줄 : 차례대로 풍선 안의 종이 숫자가 주어짐 (단, 0은 주어지지 않음) 출력 터진 풍선의 번호를 차례대로 나열문제 해결1 ~ N까지 Deque에 추가 종이 숫자를 N+1의 배열을 만들어 인덱스 1 ~ N까지 둘째 줄 저장 덱의 첫 번째 값 StringBuilder에 추가 배열[터진 풍선 번호]의 값 X 확인Deque이 빌 때까지 반복양..
[Java] 9단계. 덱 2 [28279번] https://www.acmicpc.net/problem/28279예제 입력11161 31 87832 51 2544예제 출력11838353문제 접근덱 명령어 1 X : 덱의 앞에 X 추가 → addFirst()2 X : 덱의 뒤에 X 추가 → addList()3 : 덱의 앞에 정수를 제거하고 출력, 없으면 -1 → pollFirst()4 : 덱의 뒤에 정수를 제거하고 출력, 없으면 -1 → pollLast()5 : 덱의 정수 개수 출력 → size()6 : 덱이 비어있으면 1, 아니면 0 → isEmpty()7 : 덱에 정수가 있다면 출력, 없으면 -1 → peekFirst()8 : 덱의 정수가 없다면 출력, 없으면 -1 → peekLast()1 입력 첫째 줄 : 명령 N (1 ~ N번째 줄 : 명령 출..
[Java] 8단계. 요세푸스 문제 0 [11866번] https://www.acmicpc.net/problem/11866예제 입력17 3예제 출력1문제 접근1 ~ N명의 사람이 원으로 앉음 순서대로 K 번째 사람 제거 한 사람이 제거 되면 남은 사람들로 원을 만들어 반복Ex) (N, K) 요세푸스 순열 - (7, 3) 원 : 1, 2, 3, 4, 5, 6, 7 제거 : 1, 2, X, 4, 5, 6, 7 제거된 순서 : 3 제거 : 1, 2, X, 4, 5, X, 7 제거된 순서 : 3, 6 제거 : 1, X, X, 4, 5, X, 7 제거된 순서 : 3, 6, 2 제거 : 1, X, X, 4, 5, X, X 제거된 순서 : 3, 6, 2, 7 ... 제거된 순서 : 3, 6, 2, 7, 5, 1, 4입력 첫째 줄 : N과 K (1 출력 요세푸스 순열 출력..
[Java] 7단계. 카드 2 [2164번] https://www.acmicpc.net/problem/2164예제 입력16예제 출력14문제 접근1 ~ N까지의 카드가 순서대로 놓임 (가장 위 1, 가장 아래 N) 제일 위의 카드를 버림 제일 위의 카드를 맨 밑으로 옮김 Ex) N = 4 1234 → 234 → 342 → 42 → 24 → 4(출력) 입력 첫째 줄 : N (1 출력 남게되는 카드 번호 출력문제 해결Queue 1부터 N까지 삽입Queue의 size가 1이라면 종료, Queue의 size가 1이 아니라면 다음 로직 실행맨 위의 카드 버림 → poll()맨 위의 카드를 Queue에 다시 추가 → poll() & add()기존 풀이 [메모리 : 45,612 KB / 시간 : 160 ms]public static void main(String..
[Java] 6단계. 큐 2 [18258번] https://www.acmicpc.net/problem/18258예제 입력115push 1push 2frontbacksizeemptypoppoppopsizeemptypoppush 3emptyfront예제 출력1122012-101-103문제 접근큐 명령어push X : 정수 X를 Queue에 추가 → add(X) pop : Queue에 가장 앞의 정수를 빼고 그 수를 출력, 큐가 비어있다면 없다면 -1 → poll() size : 큐에 있는 정수 개수 출력 → size() empty : 큐가 비어있으면 1, 아니면 0 출력 → isEmpty() front : 큐의 가장 앞 정수 출력, 큐가 비어있다면 -1 출력 → peek() back : 큐의 가장 뒤 정수 출력, 큐가 비어있다면 -1 출력 → 메서드 ..
[Java] 5단계. 도키도키 간식드리미 [12789번] https://www.acmicpc.net/problem/12789예제 입력155 4 1 3 2예제 출력1Nice문제 접근번호표 순서대로만 간식을 받을 수 있음 → Nice 출력 즉, 번호 순서대로가 아니면 간식을 받지 못함 → Sad 출력 입력 첫째 줄 : 학생들의 수 N (1 둘째 줄 : 모든 학생들의 번호표 (1, 2, ..., N) 출력무사히 간식을 받을 수 있으면 Nice, 그렇지 않으면 Sad 출력문제 해결번호표(numberSequence)는 1번부터 시작, N번만큼 반복번호표와 숫자가 같으면 번호표 +1, 아니면 Stack Pushwhile문 조건 : Stack이 비어있지 않고, peek()이 번호표와 같으면 번호표 + 1, Stack Pop최종적으로 Stack이 비어있으면 Nice, 아니면..
[Java] 4단계. 균형잡힌 세상 [4949번] https://www.acmicpc.net/problem/4949예제 입력1So when I die (the [first] I will see in (heaven) is a score list).[ first in ] ( first out ).Half Moon tonight (At least it is better than no Moon at all].A rope may form )( a trail in a maze.Help( I[m being held prisoner in a fortune cookie factory)].([ (([( [ ] ) ( ) (( ))] )) ]). ..예제 출력1yesyesnononoyesyes문제 접근문자열에 포함되는 괄호는 소괄호와 대괄호 2종류 문자열이 균형을 이루는 ..