큐(queue)

    큐(queue)

    큐 스택과 같이 데이터를 임시 저장하는 자료구조이다. 하지만 스택과 반대로 가정 먼저 넣은 데이를 가장 먼저 꺼내는 선입선출(FIFO: First In First Out) 구조를 가진다.예: 놀이공원에서 보통 줄 서는 구조 큐에 데이터를 넣을 떄는 인큐(enqueue), 큐에서 데이터를 꺼낼 때는 디큐(dequeue) 함수를 정의 데이터를 직접 꺼내는 것이 아니라 두개의 포인터(front, rear) 를 사용해서 위치를 나타낸다. 코드 # 고정 길이 큐 구현하기 with 링 버퍼. # 기존의 리스트로 dequeue 구현 시 시간 복잡도가 O(n) 으로 상당히 비효율적이다. # 이를 해결하기 위해 링 버퍼를 사용. from typing import Any class FixedQueue: class Empt..

    [python] SWEA - 5432. 쇠막대기 자르기

    [python] SWEA - 5432. 쇠막대기 자르기

    문제 해결 1. D4 | 큐, 스택 2. 주어진 인풋값을 차례로 하나씩 큐에 넣을 준비를 한다. 3. '(' 이면 큐에 넣는다. 4. ')' 일 때 (1) 이전에 '(' 이 나왔다면 레이저이므로 잘라준다. - 이 때 큐 안에 있는 갯수 만큼 조각이 나온다. (2) 이전에 ')' 이 나왔다면 끝부분이다. 큐 안에서 시작부분을 하나 꺼내주고 조각 갯수를 +1한다. 💨 전에 풀어 봤던 느낌이 나는 문제이다. 큐스택을 활용해 조건에 맞게 꺼내주고 빼주고 하면 된다. 소스 코드 from _collections import deque for tc in range(1, 1+int(input())): iron_bar = input() q = deque() cnt = 0 for i in range(len(iron_bar..

    [JavaScript] 프로그래머스 - 프린터

    [JavaScript] 프로그래머스 - 프린터

    문제 해결 1. 인쇄되는 조건과 내 문서의 위치 그리고 인쇄가 몇번 됐는지 체크하며 문제를 해결한다. 2. 맨 앞의 문서를 꺼내고 우선순위가 제일 높은지 확인한다. 3. 우선순위가 제일 높다면 인쇄를 하고 카운트를 올려준다. 4. 아니라면 꺼낸 문서를 맨 뒤에 집어 넣는다. 5. 문서를 꺼낼 때마다 내문서의 위치를 바꿔준다. 6. 다시 2번으로 돌아가 반복한다. 😎 스택/큐 문제이다. 소스 코드 function solution(priorities, location) { var answer = 0; // 인쇄를 몇번 했는지 var cnt = 0 // 내문서의 위치 var myDoc = location while (priorities.length > 0) { // 맨 앞의 문서를 꺼낸다 var c = pri..

    [JavaScript] 프로그래머스 - 기능개발

    [JavaScript] 프로그래머스 - 기능개발

    문제 해결 1. 큐/스택을 활용하는 문제! 2. 현재 진행 상황(progresses) 에 각각 속도(speeds)를 더해준다. 3. 뒤에있는 기능이 앞의 기능보다 먼저 개발 돼도 배포가 불가능 (1) 맨 앞의 기능부터 확인해 준다. (2) 맨 앞의 기능이 개발 완료 됐다면 배포한다(배열에서 제거한다.) (3) 개발 완료 되지 않았다면 2번으로 간다 🌤 큐/스택을 활용하는 문제 splice를 이용했는데 pop과 shift라는 메소드가 존재하는 것을 알게 됐다. 🛴 pop. shift var arr = [1,2,3,4,5] arr.pop() console.log(arr) // [ 1, 2, 3, 4 ] arr.shift() console.log(arr) // [ 2, 3, 4 ] pop은 배열의 마지막에 있..