1. 큐(queue)란 무엇인가?'큐(queue)' 란 '줄을 서다'라는 뜻을 가지고 있다. 큐는 먼저 들어간 데이터가 먼저 나오는 자료구조이며, 이런 큐의 특징을 FIFO(First In First Out) 또는 선입선출이라고 한다. 그리고 큐에서 삽입하는 연산을 Enqueue(add) 라고 하고, 꺼내느 연산을 Dequeue(Poll) 이라고 한다. 2. 큐의 ADT구분정의설명연산boolean isFull()큐에 들어 있는 데이터 개수가 maxsize 인지 확인 해서 boolean 값을 반환boolean isEmpty()큐에 들어 있는 데이터가 하나도 없는지 확인해서 boolean 값을 반환void add(ItemType item)큐에 데이터 삽입ItemType poll()큐에서 처음에 삽입한 제..
📑 1. 문제설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr💡 2. 풀이 과정이 문제는 queue 로 푸는 문제이다 (이걸 유추할 수 있는 부분)card1과 card2는 무조건 앞부터 사용해야 함순서를 뒤바꿀 수 없음이 두 문장은 FIFO 구조를 나타낸다.그래서 card1, card2, goal 을 큐를 사용해서 관리 가능하다. card1과 card2, goal을 큐로 변환한다.goal의 front와 (card1 또는 card2)의 front의 값을 비교한다.사용할 수 있는 카드가 있는가? (값이 같으면 사용 가능)Yes이면 해당 큐와 goal에서 각각 poll, 그렇지 않으면 No를 반환한다..
📑 1. 문제설명✅ 문제 이문제는 유대인 역사가 플라비우스 요세푸스가 만든 문제이다. N명의 사람이 원 형태로 서 있다. 각 사람은 1부터 N까지 번호표를 갖고 있다. 그리고 임의의 숫자 K가 주어졌을 때 다음과 같이 사람을 없앤다.1번 번호표를 가진 사람을 기준으로 K번째 사람을 없앤다.없앤 사람 다음 사람을 기준으로 하고 다시 K번째 사람을 없앤다.N과 K가 주어질 때 마지막에 살아 있는 사람의 번호를 반환하는 solution() 함수를 구현해주세요 ✅ 제약조건N과 K는 1이상 1000이하의 자연수이다. ✅ 입출력 예NKreturn523 💡 2. 풀이 과정입출력 예를 그대로 그림으로 구현하려고 한다.N = 5, K = 2 이고 사람마다 1~5번까지의 숫자를 붙여 원형으로 배치한다.그리고 첫번째 ..
🤖 1. 문제설명문제 설명이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다.operations의 원소는 큐가 수행할 연산을 나타냅니다.원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다.빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다. 입출력 예 설명 입출력 예 #116과 -..
📑 1. 문제설명하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 들어- 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다.- A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms) - B: 1ms부터 대기하다가, 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료(요청에서 종료까지 ..
1. 문제설명 예제 #1문제에 나온 예와 같습니다. 예제 #26개의 프로세스 [A, B, C, D, E, F]가 대기 큐에 있고 중요도가 [1, 1, 9, 1, 1, 1] 이므로 [C, D, E, F, A, B] 순으로 실행됩니다. 따라서 A는 5번째로 실행됩니다.2. 접근방식2-1. 배열 쪼개기 (추천하지 않음❌)보자마자 최대값을 찾아서 최대값의 인덱스를 기준으로 배열을 쪼개서 다시 붙이면 될 거 같다고 생각했다. priorities 배열를 순회하면서 우선순위 max값을 찾고, 그 값의 인덱스를 기준으로 배열을 두 개로 쪼갠 다음, 앞 뒤로 이어서 붙이는 것이다. 되게 쉽게 풀 줄 알았는데 생각보다 어려웠고 솔직히 계속 실패했다. 배열 쪼개는 메서드를 구글에서 찾아가면서 코드를 쓰는데 써 내려 갈수록 ..
1. 문제설명프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수..