해결된 질문
작성
·
235
2
맨토링 문제에서
if(test[k][s]===i) pi = s;
if(test[k][s]===j) pj = s;
이것에 대한 이해가 안됩니다. 그리고
for(let i=1; i<=n; i++){ 여기서 n이 아니라 m으로 생각했는데 첫번째 반복문이니 arr배열의 전체를 돌려야 하는것으로 생각해서 m넣어야 하는것이 아닌가요?
이렇듯 전체적으로 보충 설명을 한번 부탁드립니다ㅠㅠ
답변 1
25
안녕하세요^^
이 문제 코드에 있는 4중 for문의 각 인덱스 변수가 무엇을 의미하는지 알아야 합니다.
첫 번째 for문의 인덱스인 i는 멘토가 되는 학생의 번호입니다.(1부터 n번까지)
두 번째 for문의 인덱스인 j는 멘티가 되는 학생의 번호입니다.(1부터 n번까지)
세 번째 for문의 인덱스인 k는 수학 테스트 번호입니다.(0번째 테스트부터 m-1번째 트스트까지)
네 번째 for문의 인덱스인 s는 각 테스트에서의 등수를 의미합니다. (0등부터 n-1등까지)
이것을 이해하고 영상을 다시 보시면 이해가 갈 것입니다.
if(test[k][s]===i) pi = s;
위에 코드의 test[k][s]의 값은 k번째 테스트에서 s등을 하는 학생의 번호입니다. 즉
if(test[k][s]===i) 이 참이되면 s는 i번 학생의 등수가 되는 것이고 그것을 pi에 저장하는 것입니다.
따라서 pi는 멘토가 되는 i번 학생의 등수인 것입니다.
그러면 pj는 멘티가 되는 j번 학생의 등수가 되겠죠.