일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스파르타코딩클럽
- 우선순위큐
- Java
- coding test
- 배열
- CSS
- 자바
- 코딩테스트
- SQL
- hash
- string
- 네이버
- point queue
- 자료구조
- Stack
- HTML
- Python
- array
- Coding
- 해쉬
- 정렬
- programmers
- 프로그래머스
- HashMap
- Eclipse
- Queue
- HashSet
- javac
- Naver
- compare()
- Today
- Total
youngik
스택/큐 (기능개발) 본문
스택의 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' 카테고리의 다른 글
스택/큐 (프린터) (0) | 2021.04.07 |
---|---|
정렬 (H-index) (0) | 2021.04.07 |
스택/큐 (주식가격) (0) | 2021.04.07 |
스택/큐 (다리를 지나는 트럭) (0) | 2021.04.06 |
정렬 (k번째수) (0) | 2021.04.04 |