[알고리즘] 멘토링

Eunhye Kim·2023년 12월 19일
0

알고리즘

목록 보기
5/10

입력 설명

첫 번째 줄에 반 학생 수 N(1 <= N <= 20) 과 M(1 <= M <= 10)이 주어진다.
두 번째 줄부터 M개의 줄에 걸쳐 수학테스트 결과가 학생번호로 주어진다. 학생번호가 제일 앞에서부터 1등, 2등, ...N등 순으로 표현된다.
만약 한 줄에 N=4이고, 테스트 결과가 3 4 1 2로 입력되었다면 3번 학생이 1등, 4번 학생이 2등, 1번 학생이 3등, 2번 학생이 4등을 의미합니다.

출력 설명

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

입력예제

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

출력예제

3

풀이

const arr = [
  [3, 4, 1, 2],
  [4, 3, 2, 1],
  [3, 1, 4, 2],
];

solution(arr);

// 완전탐색 대표적 문제
function solution() {
  let answer = 0;
  // 행 크기
  let m = arr.length;
  // 학생 수
  let n = arr[0].length;

  for (let i = 1; i <= n; i++) {
    for (let j = 1; j <= n; j++) {
      let cunt = 0;

      for (let s = 0; s < m; s++) {
        let pi = 0;
        let pj = 0;
        for (let k = 0; k < n; k++) {
          if (arr[s][k] === i) pi = k;
          if (arr[s][k] === j) pj = k;
        }
        if (pi < pj) {
          cunt++;
        }
      }
      if (cunt === m) {
        answer++;
      }
    }
  }
  console.log(answer);
  return answer;
}
profile
개발에 몰두하며 성장하는 도중에 얻은 인사이트에 희열을 느낍니다.

0개의 댓글