![](https://velog.velcdn.com/images/wjdwltn0909/post/f5c8a28f-5d8c-4b17-9afb-5540ec4b9dd5/image.png)
해당 글은 항해99 클럽 코딩테스트 스터디에서 진행된 18일차(20241114) 비기너 문제에 대한
TIL(Today I Learned) 내용입니다.
문제 출처) https://www.acmicpc.net/problem/26042
문제해결에 활용한 핵심포인트!
1. 문제에 대한 해석과 입력/출력에 대한 확인하기
- 다소 복잡한 문제 상황이어서, 해당 문제에 대한 이해가 우선이었다.
- 입력과 출력 조건에 대해서도 확인 필요했다.
(실제로, 출력할 때의 계층을 착각하게 된다면 출력 오류가 난다. 아주 여러번 났다..)
2. 문제상황에서 활용하기에 적합한 구조에 대해 고려하기
- 이 문제에서 핵심적으로 필요했던 것은 다음과 같다.
(1) 인덱스 0 자리의 것을 제거하는 것(입력으로 2주어지면, 대기줄 맨 처음 학생을 대기줄에서 제거)
(2) 특정조건 만족시(대기줄 최대길이인 순간), 맨 마지막에 존재하는 요소(학생번호) 확인
- 위의 2가지 사항에 대해 수행할 수 있는 함수를 가진 것은 deque의 poll()과 peekLast()
3. 초기화값에 대한 설정 주의
- 해당 문제에서는
"최대 학생 대개줄 길이, 그 때의 맨 마지막 학생의 번호(대기줄 최대 순간이 여러번이라면 최소 선택)"
즉, 최댓값과 최솟값을 구하는 문제이다.
- 이러한 문제에 대해서는 그 초기값 설정이 필요했는데,
특히나 최솟값을 구하는 경우 그 초기값을 Integer.MAX_VALUE로 지정한다.
4. 특정 표현에 대한 다양한 풀이
" 최솟값 구하기"
- 처음 풀이) 현재최소값과 비교하여 지금 선택한 값과 대소비교를 한다.
- 나중 풀이) Math.min(X, Y) 함수를 활용한다.