본문 바로가기

deque6

[백준-골드5] 5430번 AC (큐, 파이썬) https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net - 우선 콤마와 대괄호를 제거해서 큐를 생성한다. - 그리고 명령에 따라 동작을 수행하는데 처음 코드는 R이 나올때마다 reverse를 이용했더니 시간초과가 떴다. - 이를 해결하기 위해 R이 나올때 갯수를 카운트했다. - D 명령어를 수행할 때 reverse_cnt가 짝수이면 맨 앞 원소를 pop했고, 그게 아니라면 맨 뒤 원소를 pop했다. -> reverse 연산을 최소화 하기 위해 - D 명령어를 수행하는데 큐가 비어있다면 error를 출력하고 .. 2022. 2. 28.
[백준-실버4] 11866번 요세푸스 문제0(큐, 파이썬) https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net - 우선 문제는 k번째 사람을 제거하는것이 목표인데, 한 사람이 제거 되면 남은 사람들 중 k번째 사람을 제거하는 것이다. - n명이 모두 제거될 때까지 지속하는데, 이때 제거 되는 순서를 출력해야한다. - k번째 사람이 제거 되려면 큐의 맨 앞으로 이동해야한다. 이때 rotate를 이용해서 이동했다. - 큐에 모든 원소가 제거 될 때까지 rotate를 이용해서 큐를 이동시키고, 가장 맨 앞 원소를 result에 담았다. - 그리고 출력 조건을 맞추기 위해서 s에 정답을 담는데, .. 2022. 2. 28.
[백준-실버4] 1021번 회전하는 큐(큐, deque, 파이썬) https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net - idx_list에 뽑아야할 수의 인덱스를 저장했다.(이 때 문제 인덱스는 1부터 n 임을 주의) - queue는 인덱스를 나타낸다. 따라서 1-n까지의 값을 넣어주었다. - idx_list를 순회하면서 어느 방향으로 회전하는게 최소인지 파악한다. - left는 큐에서 뽑아야하는 idx의 인덱스를 나타낸다. - right는 left(현재 위치)를 제외하고 오른쪽으로 어느 정도 길이인지 확인한.. 2022. 2. 18.
[백준-골드5] 20055번 컨베이어 벨트 위의 로봇(구현, 파이썬) https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net [시간 초과 원인] - 직접 rotations 함수를 만들어서 회전시켰다. 이 때, 시간복잡도는 O(N*2) - deque의 rotate를 이용하니까 해결,,, - 그리고 문제에서 0이 K이상이면 종료하라했는데, 나는 잘못 읽어서 K일때 종료 조건을 넣어서 시간초과가 났었다. - 입력을 deque로 받고, 로봇의 위치를 나타낼 큐도 설정했다. - 이 때 로봇은 (N-1)에 도.. 2022. 2. 14.