멘토링

지창언·2022년 8월 3일

codingTest

목록 보기
24/29

Index

1.문제
2.내 코드


문제

수학 테스트 점수를 기준으로 멘토와 멘티를 짝지으려 합니다.
멘토는 모든 수학테스트에서 멘티보다 성적이 높아야합니다.

각 배열을 통해 각 수학 시험의 결과가 성적순으로 학생번호가 입력됩니다.
멘토와 멘티가 이루어질 수 있는 모든 경우의 수를 출력하세요.

예시)
입력
3412
4321
3142
출력
3
({3,1}, {3,2}, {4,2} 세가지 경우가 가능)


내 코드

<script>
    function solution(test){
        let answer = [];
        let stand = test[0];
        let found = false;
        for(let i=0; i<stand.length-1;i++){
            for(let j=i+1; j<stand.length; j++){
                for(let k=1; k<test.length;k++){
                    if(test[k].indexOf(stand[i])>test[k].indexOf(stand[j])){
                        found = true;
                    }
                }
                if(found === false){
                    answer.push([stand[i],stand[j]]);
                }
                found = false;
            }
        }
        return answer;
    }
    let arr=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
    console.log(solution(arr));
</script>
  1. 입력받은 2차원 배열에서 첫번째 배열을 기준으로 삼습니다.
  2. found 변수를 통해 반례값이 나왔는지 여부를 확인합니다.
  3. i와 j를 통해 모든 첫번째 배열의 모든 경우의 수를 확인합니다.
    ({3,4}, {3,1}, {3,2}, {4,1}, {4,2}, {1,2})
  4. k를 통해 각 수학테스트를 순회합니다.
  5. 각각의 수학 테스트에서 모든 경우의 수에 대한 반례가 나왔다면 found = true로 설정합니다.
  6. found === false 일 경우의 수만 정답배열에 추가합니다.

profile
프론트엔드 개발자가 되고 싶은...

0개의 댓글