본문 바로가기

알고리즘/스택, 큐16

[백준-골드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.
[백준-실버3] 5397번 키로거(스택, 파이썬) https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net - 입력 받은 data를 돌면서 입력에 따라 분리하였다. - ''가 입력인 경우, 오른쪽으로 이동할수있으면 커서를 이동해야한다. 위와 반대로 temp에 데이터가 있으면 stack에 옮겨주었다. - '-'가 입력으로 들어오면 앞 글자를 지워야한다. 이 경우에는 stack에 데이터가 있으면 pop해서 뽑아주었다. - 문자가 입력으로 들어온 경우에는 stack에 넣어준다. - 최종적으로 stac.. 2022. 2. 21.
[백준-골드4] 9935번 문자열 폭발(스택, 파이썬) https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net - 우선 while문을 이용해서 data에 target이 있을때까지 replace를 했는데 시간초과가 났다. - 그래서 스택을 이용함 - 스택에 입력 문자열을 하나씩 넣으면서 스택의 마지막과 target의 마지막이 같은 경우 - temp에 리스트 슬라이싱을 이용해서 target의 길이만큼 잘라준 후 target과 temp가 같은 경우 폭발 문자열이 들어있다는 의미이기 때문에 targ.. 2022. 2. 20.