본문 바로가기

알고리즘

멘토링(블루투포스)

 

 

  function solution(arr){
    let testCnt = arr.length;
    let students = arr[0].length
    let answer = 0;
    for(let i=0; i< testCnt; i++){
        for(let j=0; j<students; j++){
            loop :
            for(let k=0; k<students; k++){
                if(arr[i][j] < arr[i][k]){
                    for(let s =0; s< testCnt; s++){
                        if(s != i && arr[s][j] > arr[s][k]) continue loop;
                    }
                    answer++;
                } 
            }
        }
    }
    return answer;
}

풀이 과정은 모든 학생들의 모든 수학 등수를 한번씩 체크하면서 다른 학생의 수학 등수와 비교를 한다 그리고 해당 등수가 더 높으면 다른 시험에서도 등수가 더 높은지를 체크하고 만약 등수가 더 낮다면 continue 를 사용하여 다음 학생을 체크한다 하지만, 모든 수학문제에서 해당 학생보다 점수가 높다면 answer++ 해준다.

 

 function solution(test){
    let answer=0;
    m=test.length;
    n=test[0].length;
    for(let i=1; i<=n; i++){
        for(let j=1; j<=n; j++){
            let cnt=0;
            for(let k=0; k<m; k++){
                let pi=pj=0;
                for(let s=0; s<n; s++){
                    if(test[k][s]===i) pi=s;
                    if(test[k][s]===j) pj=s;
                }
                if(pi<pj) cnt++;
            }
            if(cnt===m) answer++;
        }
    }
    return answer;
}

강사님의 풀이 과정이다 코드 가독성은 내가 더 깔끔하다고 생각했는데 ( 사실 아닐지도...)

속도는 강사님 속도가 더 빠르다 왜지..continue 까지 써서 최소화 했다고 생각했는데 쩝..

강사님 풀이를 보자면 음.... 이해하지 못했다.... 왜 test[k][s] 값이 i나 j 값이랑 일치할 때가 조건인지 생각해봐야겠다

혹시라도 이해한 사람이 있다면 알려주세요, 저도 나중에 이해가 된다면 추가적으로 글 작성할게요 껄껄

'알고리즘' 카테고리의 다른 글

뒤집은 소수  (0) 2022.07.13
자릿수의 합  (0) 2022.07.13
문자열 압축  (0) 2022.07.12
문자거리  (0) 2022.07.12