강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của woojinchoi4915
woojinchoi4915

câu hỏi đã được viết

10 thuật toán JavaScript hàng đầu

Số 3. Lựa chọn người tham gia (sắp xếp) - 2

3번 출정인원 선발

Viết

·

280

0

3번 출정 인원 선발의 아래 코드에서 질문이 있습니다.

if문의 첫 번째 조건에서, 선발된 인원이 2명, 선발해야 하는 인원이 4명, i[1].length가 3일 경우에 조건을 통과하여 선발인원에 push가 되는데, 남은 자리가 2개여서 3명이 추가되면 안되니까 조건이 잘못된 것이 아닌가요??

그래서 선발해야하는 인원과 선발된 인원의 차이를 고려하여 첫 번째 조건의 && 뒷부분 조건이 아래 코드블럭처럼 되어야 하는게 아닐지 궁금합니다.

 

제가 잘못 생각했다면 어느 지점이 잘못된 것일지도 궁금합니다 감사합니다!

i[1].length <= 선발해야하는인원 - 선발된 인원

 

javascript코딩-테스트알고리즘

Câu trả lời 2

0

The Oreum님의 프로필 이미지
The Oreum
Người chia sẻ kiến thức

수강생분의 정답이 맞는 답입니다!
선발해야하는 인원은 실시간으로 변하기때문에 해당 부분을 적용해야 했네요!
좋은 질문 감사합니다 강의노트에 해당 부분 반영하도록 하겠습니다. 너무 감사합니다 :)
----
질문주신분의 예외를 적용한 테스트케이스를 만들어서 진행했습니다.

const data = [['A', 25, 25, 26, 25], ['B', 25, 25, 27, 25], ['C', 25, 28, 25, 25], ['D', 25, 25, 29, 25],['E', 25, 25, 25, 25], ['F', 25, 28, 25, 25], ['G', 25, 25, 20, 25]]

이때 상위 30%면 2명을 뽑아야합니다.

104:[D]
103:[C,F]
102:[B]
....생략...

점수계산을 하고나면 이렇게 나오는데 동점자가 있는경우 제외이기때문에 C,F는 빠지고 D와 B가 나와야합니다.

처음 반복에서 D가 들어갑니다.

두번째 반복에서 D가 이미 있어서 1개만 추가될 수 있지만 조건문인선발된인원 < 선발해야하는인원 && i[1].length <= 선발해야하는인원 이부분 에는 최초 선발해야하는 인원이 고정이기때문에 길이가 2이상인 값도 모두 들어가게 됩니다. 이로인해 이미 배열에 1개가 추가되어있고 1개만 들어갈 수 있는 상황에서 2개가 들어가네요.

이때문에 C,F가 들어가 예상되는 답인 D,B가 아닌 F,C,D 가 출력됩니다.
해당 예외를 적용하기위해
선발된인원 < 선발해야하는인원 && i[1].length <= 선발해야하는인원 - 선발된인원 과 같은 조건을 주는것이 맞겠네요!

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 대한 답변을 드릴게요.

문제 상황에 따라, i[1].length <= 선발해야하는인원 - 선발된 인원 조건을 적용하는 것이 맞습니다. 님이 이해하신 부분은 올바르게 파악하셨어요. 선발해야 하는 인원과 이미 선발된 인원의 차이를 고려하지 않는다면, 선발 인원 수를 초과하여 더 많은 인원을 선발할 수 있는 상황이 발생할 수 있습니다. 따라서, 선발 과정에서 i[1].length가 선발해야 하는 인원과 선발된 인원의 차이보다 작거나 같아야 한다는 조건은 중요한 로직으로 보입니다.

즉, 제공해주신 코드 조건에 따르면, 선발해야 하는 인원과 현재까지 선발된 인원의 차이를 고려하여 추가 인원을 선발할 수 있는지를 판단해야 합니다. 이렇게 조건을 설정함으로써 올바르게 인원을 선발할 수 있습니다.

질문에 제공된 코드와 상황 설명을 바탕으로, 님의 이해와 접근 방식이 맞으며, 이 조건을 통해 의도한 바와 같이 인원 선발 로직이 올바르게 동작할 것입니다.

추가적인 질문이 있으시면 언제든지 문의해 주세요. 도움이 되었길 바랍니다!

Hình ảnh hồ sơ của woojinchoi4915
woojinchoi4915

câu hỏi đã được viết

Đặt câu hỏi