youngik

스택/큐 (기능개발) 본문

programmers

스택/큐 (기능개발)

youngik 2021. 4. 7. 02:03

스택의 3번째 문제이다. 먼저 위의 문제를 분석해보면서

 

1. Queue에 각 작업을 등록하고, 각 작업의 값을 speed값을 더한다. 

2. 맨 앞에 작업보다 뒤에 작업이 먼저 100이 될 수가 있고, 바로 나오는 것이 아니라

   앞 작업이 100이 되어야 나올 수 있어야 함.

3. 결과값으로 출력해야하는 return값의 배열길이는 한번에 나오는 작업의 수

   *따라서 전체 작업의 수의 길이와 배열길이는 다르다!

 

* 여기서 progresses 값만 queue에 넣고 speed는 그대로 배열로 사용하려고 하다가,

  queue에서 progresses값이 나가면, speed 배열은 그대로 유지하기 때문에

  이전 문제에서 사용했던 <Point> 큐를 사용해서 x = progresses, y = speeds 를 넣었다.

 

* 구현한 기능

1) 각 queue의 값을 더하는 함수 add를 따로 구현하고

2) 작업을 가지고 있는 큐가 비어있을 때까지 반복

3) 작업률이 100인 작업이 나올때까지 speed를 더하다가, 100이 되면 그 뒤에 값도 100인 작업이 몇 개 있는지 count

   (*count한 값을 다시 새로운 queue에 넣고 0으로 초기화)

 

생각보다 전 문제에서 <Point> queue를 사용하니, 더 구현하는 속도가 빨랐지만 queue를 array형태로

전환시키는 부분에서 queue.toArray() 함수를 사용하려다가 -> Object[] array 형태로 반환하기 때문에

한번 삽질했다가. queue의 길이만큼 array를 생성하고 queue의 값을 반복문으로 넣었다.

 

 

queue를 계속해서 사용하다보니, 실생활에서 정말 이루어질법한 과정들을 배열이나 리스트보다

구현하기가 쉬운 것 같다. 새삼스럽게 자료구조 시간에 배웠던 queue가 도움이 된다는 것이

코딩테스트를 해보면서 느끼는 것 같다!!

 

*출처 : programmers.co.kr/learn/courses/30/lessons/42586

'programmers' 카테고리의 다른 글

스택/큐 (프린터)  (0) 2021.04.07
정렬 (H-index)  (0) 2021.04.07
스택/큐 (주식가격)  (0) 2021.04.07
스택/큐 (다리를 지나는 트럭)  (0) 2021.04.06
정렬 (k번째수)  (0) 2021.04.04
Comments