일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- HashMap
- 해쉬
- string
- 자바
- compare()
- 프로그래머스
- 배열
- Java
- 자료구조
- Coding
- coding test
- 스파르타코딩클럽
- 우선순위큐
- programmers
- SQL
- javac
- array
- Queue
- Stack
- CSS
- 코딩테스트
- point queue
- Naver
- 네이버
- Eclipse
- HashSet
- hash
- HTML
- 정렬
- Today
- Total
youngik
스택/큐 (다리를 지나는 트럭) 본문
이번 문제는 처음부터 삽질을 많이 한 결과로 볼수가 있다ㅠ
stack & queue에 대한 개념을 먼저 잡아야 했고, 다리를 통과하는 것은 stack보다는 queue가 더
적합한 것 같아서 queue를 통해 구현하기로 했다.
*기본적인 stack 선언
Queue temp = new LinkedList();
Queue는 LikedList 형태로 구현이 되어있고, array와 같은 개별적으로 존재하는 것이 아닌 값들이 서로
연결되어있어 메모리의 빈 공간을 차지하지 않는다는 장점이 있다.
하지만 장점이 있으면 단점이 있다는 것인데, 자료값을 search 하거나, 삽입, 삭제 등을 할 때 시간이 걸린다.
array는 int arr[4] = 0; 같이 직관적으로 삽입할 수 있으니!!
▶위 문제를 먼저 분석해본결과
1. truck array -> truck_queue에 삽입하고
2. truck_queue에서 bridge_queue로 넣을 때 (현재 bridege_queue + truck_queue 맨 앞 값 <= weight 이어야 함)
3. queue안에 있는 값들은 (bridge를 이동하는 값, 전체시간을) 1cycle마다 1씩 증가 시켜야 함.
4. bridge 길이를 통과하면 queue의 맨 앞에 있는 트럭을 poll() 처리
5. truck_queue와 bridge_queue가 비어있을 때 까지 진행
▶사용한 함수
add() -> queue에 값을 추가
poll() -> queue에서 맨 앞 값을 꺼냄
peek() -> queue 맨 앞 값을 꺼내지는 않고 맨 앞의 값 확인
is.Empty() -> 스택이 비어있는지 확인하는 함수
*처음에 전체적인 시간에서 bridge 길이만큼 1cycle마다 1씩 증가시켰는데, 트럭이 1초 간격으로 들어왔을 때
1초 후에 나가는 것이 아니라, bridge 길이만큼 시간을 두고 탈출하였다. (이것이 삽질,,,)
*그래서 queue에 값 1개를 넣는 것이 아닌, (트럭무게, 다리이동시간)의 2개를 가질 수 있는 queue를 구글링 했고
Point Queue를 찾았다.
*Point Queue
Queue <Point>temp = new LinkedList<Point>();
간편하게 Point 형식의 구조체를 제공해서,, 글에서 잠깐 봤을 때는 그래프 등을 그릴 때 쓰인다는 것 같은데
Point.x / Point.y의 형태로 x,y 값을 쉽게 가지고 오고 변경 시킬수도 있다.
나는 2부분을 따로 함수로 빼서 만들었는데
1. queue안에 있는 y값 (다리이동시간)을 전체적으로 1씩 증가시키는 함수
-> queue에서 모든 값을 증가시키는 함수가 없어, 일시적인 temp_queue에 넣어놓고 다시 bridge_queue에 넣었다.
2. queue안에 있는 x값 (트럭무게)를 다 합산한 총 무게를 return 하는 함수
-> 이것도 queue 안에 있는 값을 한개씩 불러오려면 poll()로 queue에서 빼내야하기 때문에 다시 bridge_queue에 넣었다.
'programmers' 카테고리의 다른 글
스택/큐 (프린터) (0) | 2021.04.07 |
---|---|
정렬 (H-index) (0) | 2021.04.07 |
스택/큐 (기능개발) (0) | 2021.04.07 |
스택/큐 (주식가격) (0) | 2021.04.07 |
정렬 (k번째수) (0) | 2021.04.04 |