오늘은 스택/큐 문제를 풀어보고 하나하나 복습했다.
전체적으로 문제가 어렵다고 느꼈는데 개인적으로 스택은 조금 더 할만하다고 느끼고, 큐는 학습이 부족하다고 느꼈다.
1.스택 문제(브라우저 앞으로 가기 뒤로 가기) - String[] actions와 String start를 받아 actions에 대문자 영어가 들어가면 새로운 인터넷 페이지를, 1을 입력받으면 앞으로 가기, -1을 입력 받으면 뒤로 가기를 실행하는 클래스를 생성하는 문제였다.
수도코드를 레퍼런스와 거의 유사하게 적었던 문제로, 아쉽게도 stack의 push()와 pop()부분의 이해가 살짝 부족해 푸는데 시간이 많이 걸렸었다.
2.큐 문제(박스 포장) - 큐의 기본 개념에 뒷사람이 포장을 전부 끝냈어도 앞사람이 끝내지 못하면 기다려야 한다는 제약이 더해진 문제로, 배열을 입력 받으면 통틀어 최대 몇 명이 한꺼번에 나가는지 알 수 있도록 함수를 구현하는 문제였다.
현재까지 나갈 수 있는 짐의 크기와, 앞서 비교한 값 중 큰 값을 할당해야한다는 중요하는 부분은 스스로 캐치해냈지만 전체적으로 코드로 작성하는데 실패해 레퍼런스를 보고 이해한 문제였다.
3.Advanced 큐 문제(프린터) - 프린터의 인쇄 작업 목록의 크기(Buffersize)와 최대 용량(Capacity)을 가정하고 각기 다른 용량의 문서(documents)를 차례대로 인쇄하여 모든 문서가 인쇄되는데 걸리는 최소 시간을 반환하는 솔루션을 구현하는 문제였다.
굉장히 어려웠으며 꽤 오랜 시간 수도 코드를 작성해보려고 노력했지만 부족한 부분을 느꼈고 결국 레퍼런스를 봤지만 if중첩이 3개가 들어간 걸 보고 잠시 정신이 혼미해졌던 문제다. 30분에 달하는 문제 해설 동영상을 보고 나니 어느 정도 이해는 했지만 막상 이 문제를 다시 풀어보라고 해도 막히는 부분이 있을 것 같아 추가적인 공부가 필요하다.
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
|
package com.codestates.coplit;
import java.util.*;
public class Solution {
public int queuePrinter(int bufferSize, int capacities, int[] documents) {
// TODO: 2 10 [7,4,5,6]
//1.작업 목록을 만들어야됨(크기 int bufferSize, int capacities가 존재) 큐 생성 및 documents할당
//2.반복문을 돌리면 될 건데 while이 적절할 것 같고
// 초기화 count=1, 조건식!documents.isEmpty
// if에 docu에서 poll해온
Queue<int[]> queue = new LinkedList<>(Arrays.asList(documents));
int first = queue.poll(); //f7
int count = 0;
for(int i = 0; i <= documents.length; i++) { //docu배열 전부 순회
int compare = queue.poll(); //c4 //c5 //c6 //c빈배열
//버퍼사이즈배열 요소를 다 하나씩 다음 요소로 옮겨줘야함 [0,3,2] [0,f7] [0,c5] [0,f5]
if (capacities < (first + compare)) { //10<7+4 //10<f5+c6
//버퍼사이즈배열 요소 1에 first를 넣고 //인덱스0에 f7넣고[f7,0] //인덱스0에 f5넣고[f5,c5]
//count++ //count = 1 //count = 3
//first = compare //f4 //f6
}
else if(capacities >= (first + compare)) { //10>f4+c5 //10>f5
//버퍼사이즈배열 요소 1에 compare를 넣고 //인덱스0에 c5넣고[c5,f7] //인덱스0에
//count++ //count = 2
//first = compare //f5
}
}
}
}
|
cs |
위의 코드는 내가 생각해봤던 수도코드로 동영상을 보고 오니 부족한 점이 많이 보이는데 굳이 이곳에 업로드 하는 이유는 앞으로 수도코드를 작성할 때 이렇게 알아보기 힘들게 적지 말자는 의미이다.
'코딩 스터디' 카테고리의 다른 글
momo study(23.01.20) (1) | 2023.01.20 |
---|---|
momo study(23.01.19) (1) | 2023.01.19 |
momo study(23.01.16) (0) | 2023.01.16 |
momo study(23.01.15) (0) | 2023.01.15 |
momo study(23.01.13) (0) | 2023.01.13 |