본문 바로가기
코딩테스트 연습

공 던지기

by 신재은👩🏼‍💻 2024. 5. 5.

https://school.programmers.co.kr/learn/courses/30/lessons/120843

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제를 딱 보자마자 원형 큐로 풀어야 한다고 생각했다.

그런데 뭔가 이상했다.

자바에서는 원형 큐에 대해 구현된 클래스가 없다.

그러면 내가 원형 큐 코드 자체를 한땀 한땀 따야 되는데... 그게 벌써 나온다고...?

 

그래서 GPT에 확인하니 이건 원형 배열로 풀어야 하는 문제라고 한다.

int[]로 데이터가 들어오니 배열로 풀어야 하는 거 아닌가라는 생각을 잠시 했다만

원형 배열을 한 번도 들어 본 적이 없어서;

둘 다 형태는 같을 건데 그럼 둘의 차이는 뭔가?

 

원형 배열은 배열의 특성 때문에 사이즈 조정을 할 수 없고 요소의 추가, 삭제도 안 된다.

하지만 인덱스를 사용하기 좋으니 인덱스만으로 답을 알 수 있는 문제라면 이걸 써야겠지.

원형 큐는 큐의 끝에서 삽입과 삭제를 해야 하거나 큐 사이즈를 조절해야 할 때 써야 하는 거고.

 

만약 이 문제를 원형 큐로 풀면

접근법이

'각 사람이 큐에 순서대로 들어가고,

공을 던지는 순서에 따라 큐에서 사람을 둘 빼고(공을 던지는 사람과 그 다음 사람), 한 명을 디큐할 수 있는 위치에 놓은 뒤, 다시 처음에 뺀 두 사람을 넣고,

디큐할 위치에 있던 사람과 그 다음 사람을 빼서, 위 내용이 반복 되도록 해야 한다'.

와! '굳이 이렇게 해야 되나?'싶을 정도로 복잡하지 않은가?

 

특히나 낮은 단계에서는 코드 구현이 절대 길 이유가 없다고 생각한다.

레벨이 높아지더라도 구현해야 하는 코드가 생각 이상으로 길다면, 내가 틀리게 접근하고 있는 건 아닌지 의심해 볼 필요가 있는 것 같다.

 

코테에서 요구하는 답은 절대 엄-청 길지 않다.

'코딩테스트 연습' 카테고리의 다른 글

구슬을 나누는 경우의 수  (0) 2024.05.05
영어가 싫어요  (0) 2024.05.05
문자열 다루기 기본  (0) 2024.05.05
부족한 금액 계산하기  (0) 2024.05.05
컨트롤 제트  (0) 2024.05.05