초보 개발자의 일기

멘토링 본문

코딩테스트/JS 알고리즘 문제(JS)

멘토링

판다꼬마 2023. 1. 8. 20:14
728x90

문제

 

입력

  • 학생 수 N  시험횟수 M
  • 그 아래 각 시험에서 나온 학생의 등수를 입력받는다.

 

 

출력

첫 번째 줄에 짝을 만들 수 있는 총 경우를 출력합니다.

 

입력 예시

4 3
3 4 1 2
4 3 2 1
3 1 4 2

출력 예시

3

풀이 방법

내가 직접 시도를 하였는데 내 생각으로 풀리지 않아 풀이를 보고 풀었다.

for문을 4중 for문을 돌려서 풀었다.

첫번째로 각 학생의 최종등수인 4를 각자리의 결과값으로 두고

두번의 for문을 더 돌려 [0][0]. [0][1]...[3][3],[3][4]까지의 자리수가 각각 i,j와 일치하는 경우를

변수에 저장한 후 pi가 pj보다 작으면 멘토가 가능하다는 알고리즘으로 문제를 풀었다.

내 코드

<html>
<head>
    <meta charset="UTF-8">
    <title>출력결과</title>
</head>
<body>
<script>
    const sol = (test) =>{
        let answer=0;
        let m=test.length;
        // 총 시험 횟수
        let n=test[0].length;
        // 학생 명수


        for (let i=1; i<=n; i++){
            for(let j=1; j<n; j++){
                let cnt=0;
                //m을 모두 만족하는 경우의 수
                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;
    }

    let arr=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
    console.log(sol(arr));
</script>
</body>
</html>

Solution

<html>
<head>
    <meta charset="UTF-8">
    <title>출력결과</title>
</head>
<body>
<script>
    const sol = (test) =>{
        let answer=0;
        let m=test.length;
        // 총 시험 횟수
        let n=test[0].length;
        // 학생 명수


        for (let i=1; i<=n; i++){
            for(let j=1; j<n; j++){
                let cnt=0;
                //m을 모두 만족하는 경우의 수
                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;
    }

    let arr=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
    console.log(sol(arr));
</script>
</body>
</html>

느낌점

어렵다

728x90

'코딩테스트 > JS 알고리즘 문제(JS)' 카테고리의 다른 글

두 배열 합치기  (0) 2023.01.10
K번째 큰 수  (0) 2023.01.09
뒤집은 소수  (1) 2023.01.07
자릿수의 합  (0) 2023.01.06
숫자만 추출  (0) 2023.01.02