큐(11)
-
백준 회전하는 큐 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net RotatingQueue라는 클래스를 정의하여 문제에 주어진 연산1,2,3을 구현했습니다. 뽑아야 하는 숫자들의 리스트를 targets로 정의하고, 이 숫자들을 하나씩 뽑으면서 현재 큐의 첫 번째 원소면 count 증가 없이 바로 연산1 수행, 앞쪽에 있으면 첫 번째 원소가 될 때까지 연산2를 수행하고, 수행한 횟수만큼 count 증가, 뒷쪽에 있으면 첫 번째 원소가 될 때까지 연산3을 수행하..
2021.06.08 -
프로그래머스 짝지어 제거하기 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 큐를 활용한 괄호 문제들과 비슷하게 풀이했습니다. 빈 큐인 q를 만들고, 입력으로 주어진 s의 문자를 하나씩 받으면서 q가 비어있거나, q의 마지막 요소가 현재 받은 문자와 다르면, q에 현재 문자를 추가합니다. q의 마지막 요소가 현재 문자와 같으면, q의 마지막 요소를 제거합니다. for 문이 종료되었을 때 q가 비어있으면 모든 문자가 제거된 것..
2021.06.02 -
프로그래머스 이중우선순위큐 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr operate 함수를 통해 각 명령어를 식별하고, 삽입의 경우 리스트 맨 뒤에 숫자를 삽입, 최댓값 및 최솟값은 max, min 함수를 사용하고 remove를 통해 삭제했습니다. (지금 생각해보니 만약에 최댓값이나 최솟값이 2개 이상이면 어떻게 해야 하는지 문제에 설명을 안 했네요?! 그냥 하나만 삭제하는 걸까요) for 문을 통해 각 명령어를 차례로 이행해주고, 큐가 비어있는 경우 [0,0]을, 아닌 경우 max, min 함수를 이용해 [최댓값, 최솟값]을 반환했습니다. def operate(q, operation): # 삽입 if op..
2021.06.01 -
프로그래머스 디스크 컨트롤러 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr answer에 각 작업의 요청부터 종료까지 걸린 시간의 합을 저장하고, 마지막에 이를 작업의 개수로 나눠 최종 답을 반환했습니다. 우선 jobs를 요청시점이 이른 순대로, 요청 시점이 같다면 소요시간이 적은 순대로 정렬하여 queue로 변환하고, 현재 시점을 표현하는 now라는 변수를 만들었습니다. now는 첫 작업의 요청시점으로 초기화했습니다. jobs의..
2021.06.01 -
프로그래머스 다리를 지나는 트럭 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 💡 다리와 트럭을 큐로 사용하여 풀이했습니다. 먼저 다리는 bridge라는 큐로, bridge_length만큼의 0으로 초기화시켜주었고, 트럭은 trucks라는 큐로, 입력으로 주어진 truck_weights를 큐로 변환시켜준 것입니다. trucks에서 트럭 하나씩 꺼내면서 모든 트럭이 꺼내졌을 때까지 while문을 돌립니다. 현재 트럭이 다리 위에 올라갈 수..
2021.04.07