24.05.06 18:26 작성
·
152
0
3번 출정 인원 선발의 아래 코드에서 질문이 있습니다.
if문의 첫 번째 조건에서, 선발된 인원이 2명, 선발해야 하는 인원이 4명, i[1].length가 3일 경우에 조건을 통과하여 선발인원에 push가 되는데, 남은 자리가 2개여서 3명이 추가되면 안되니까 조건이 잘못된 것이 아닌가요??
그래서 선발해야하는 인원과 선발된 인원의 차이를 고려하여 첫 번째 조건의 && 뒷부분 조건이 아래 코드블럭처럼 되어야 하는게 아닐지 궁금합니다.
제가 잘못 생각했다면 어느 지점이 잘못된 것일지도 궁금합니다 감사합니다!
i[1].length <= 선발해야하는인원 - 선발된 인원
답변 2
0
2024. 05. 13. 15:27
수강생분의 정답이 맞는 답입니다!
선발해야하는 인원은 실시간으로 변하기때문에 해당 부분을 적용해야 했네요!
좋은 질문 감사합니다 강의노트에 해당 부분 반영하도록 하겠습니다. 너무 감사합니다 :)
----
질문주신분의 예외를 적용한 테스트케이스를 만들어서 진행했습니다.
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
가 선발해야 하는 인원과 선발된 인원의 차이보다 작거나 같아야 한다는 조건은 중요한 로직으로 보입니다.
즉, 제공해주신 코드 조건에 따르면, 선발해야 하는 인원과 현재까지 선발된 인원의 차이를 고려하여 추가 인원을 선발할 수 있는지를 판단해야 합니다. 이렇게 조건을 설정함으로써 올바르게 인원을 선발할 수 있습니다.
질문에 제공된 코드와 상황 설명을 바탕으로, 님의 이해와 접근 방식이 맞으며, 이 조건을 통해 의도한 바와 같이 인원 선발 로직이 올바르게 동작할 것입니다.
추가적인 질문이 있으시면 언제든지 문의해 주세요. 도움이 되었길 바랍니다!