728x90

<오늘의 학습 키워드>
- 큐
<오늘의 문제>
제목 : 백준 / 실버5 / 26042번 식당입구대기줄
https://www.acmicpc.net/problem/26042
<풀이>
정답은 더보기
더보기
package BOJ.자료구조.식당입구대기줄_26042.insub2004_2411114;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
LinkedList<Integer> students = new LinkedList<>();
int maxSize = -1;
int minNumber = 100001;
for (int i = 0; i < N; i++) {
String[] str = br.readLine().split(" ");
if (str.length > 1) {
students.add(Integer.parseInt(String.valueOf(str[1]))); // charAt(i)로 받으면 123을 1로만 저장...
// 잘못 생각한 점
// 1. 4명 대기중에 2명 빠지고 다시 6명이 줄섰으면 mas가 4 -> 6명이게 아니라 4 - 2 + 6이 되야함
// 2. 이 계산을 2가 입력되었을 때가 아니라 1이 입력되었을 때 했어야 했다 -> 매번 사이즈를 봐야하니깐
if (students.size() > maxSize) {
maxSize = students.size();
minNumber = students.peekLast(); // 여러번일때는 최대대기줄일 때는 마지막 학생 숫자가 작은걸로 유지
} else if (students.size() == maxSize) {
if (minNumber > students.peekLast()) {
minNumber = students.peekLast(); // 같을 때는 최대 대기줄일 때 마지막 학생 숫자가 작은걸로 유지
}
}
} else {
students.poll();
}
}
System.out.println(maxSize + " " + minNumber);
}
}
- - "1 a"로 입력이 되었을 때는 Queue(대기줄)에다가 a를 add(a)해 준다.
- 그와 동시에 대기줄의 길이가 max인지 -> max라면 masSize의 변수를 업데이트, 맨 뒤에 있는 학생의 번호도 minNumber에 업데이트 한다.
- 만약에 대기줄에서 몇명이 빠지고 다시 채워졌을 때 maxSize와 동일하다면 학생수가 낮은 번호로 minNumber를 업데이트 해준다.
- "2"가 입력되었을 때는 Queue(대기줄)에서 맨 앞에 있는 학생을 poll() 해준다.
- "1 a" 입력 방식과 "2" 입력 방식을 나누는 기준은 readLine().split(" ") 했을 때 배열의 길이가 1이냐 아니냐로 구분했다.
<결론, 주의할점>
- 처음에 배열로 판단하지 않고 문자열의 길이가 1이 넘으면 charAt(2)이걸로 저장했었는데 치명적인 실수였다.
- 만약 "1 532"이 입력되었을 때 charAt(2)를 저장하면 5만 저장된다.
- 대기줄이 maxSize를 넘게 되면 무지성 맨 뒤의 학생의 번호를 넣어주면 되었다.
- 5명이였다가 2명이 빠지고 다시 2명이 줄을 섰을 때 maxSize의 길이가 기존 max와 같아지는데 이때 원래 저장되어 있던 minNumber와 비교를 해서 현재 학생의 번호가 더 작으면 현재 학생의 번호로 업데이트 해줘야한다.
반응형
'Study or Lecture > 항해 99클럽 코딩테스트 스터디' 카테고리의 다른 글
| 항해 99클럽 코딩테스트 스터디 20일차 TIL (자바 / 비기너) (1) | 2024.11.16 |
|---|---|
| 항해 99클럽 코딩테스트 스터디 19일차 TIL (자바 / 비기너) (0) | 2024.11.15 |
| 항해 99클럽 코딩테스트 스터디 17일차 TIL (자바 / 비기너) (9) | 2024.11.14 |
| 항해 99클럽 코딩테스트 스터디 16일차 TIL (자바 / 비기너) (0) | 2024.11.12 |
| 항해 99클럽 코딩테스트 스터디 일차 15TIL (자바 / 비기너) (2) | 2024.11.11 |
댓글