https://school.programmers.co.kr/learn/courses/30/lessons/120843
문제를 딱 보자마자 원형 큐로 풀어야 한다고 생각했다.
그런데 뭔가 이상했다.
자바에서는 원형 큐에 대해 구현된 클래스가 없다.
그러면 내가 원형 큐 코드 자체를 한땀 한땀 따야 되는데... 그게 벌써 나온다고...?
그래서 GPT에 확인하니 이건 원형 배열로 풀어야 하는 문제라고 한다.
int[]로 데이터가 들어오니 배열로 풀어야 하는 거 아닌가라는 생각을 잠시 했다만
원형 배열을 한 번도 들어 본 적이 없어서;
둘 다 형태는 같을 건데 그럼 둘의 차이는 뭔가?
원형 배열은 배열의 특성 때문에 사이즈 조정을 할 수 없고 요소의 추가, 삭제도 안 된다.
하지만 인덱스를 사용하기 좋으니 인덱스만으로 답을 알 수 있는 문제라면 이걸 써야겠지.
원형 큐는 큐의 끝에서 삽입과 삭제를 해야 하거나 큐 사이즈를 조절해야 할 때 써야 하는 거고.
만약 이 문제를 원형 큐로 풀면
접근법이
'각 사람이 큐에 순서대로 들어가고,
공을 던지는 순서에 따라 큐에서 사람을 둘 빼고(공을 던지는 사람과 그 다음 사람), 한 명을 디큐할 수 있는 위치에 놓은 뒤, 다시 처음에 뺀 두 사람을 넣고,
디큐할 위치에 있던 사람과 그 다음 사람을 빼서, 위 내용이 반복 되도록 해야 한다'.
와! '굳이 이렇게 해야 되나?'싶을 정도로 복잡하지 않은가?
특히나 낮은 단계에서는 코드 구현이 절대 길 이유가 없다고 생각한다.
레벨이 높아지더라도 구현해야 하는 코드가 생각 이상으로 길다면, 내가 틀리게 접근하고 있는 건 아닌지 의심해 볼 필요가 있는 것 같다.
코테에서 요구하는 답은 절대 엄-청 길지 않다.
'코딩테스트 연습' 카테고리의 다른 글
구슬을 나누는 경우의 수 (0) | 2024.05.05 |
---|---|
영어가 싫어요 (0) | 2024.05.05 |
문자열 다루기 기본 (0) | 2024.05.05 |
부족한 금액 계산하기 (0) | 2024.05.05 |
컨트롤 제트 (0) | 2024.05.05 |