멘토링

minho·2022년 2월 20일
0

문제


code

let n = arr[0].length;
let m = arr.length;
let answer = 0;

for(let i=1; i<=n; i++){
    for(let j=1; j<=n; j++){
        let cnt = 0;
        for(let l=0; l<m; l++){
            let ps = 0;
            let py = 0;            
            for(let w=0; w<n; w++) {
                if(arr[l][w] === i) ps = w;
                if(arr[l][w] === j) py = w;                
            }
            if(py<ps) cnt++;
        }
        if(cnt === m) answer++;
    }
}
console.log(answer);

원리

완전탐색으로 모든 경우의 수를 검사한다.
그러므로 4중 for을 돌린다.

  • i=1, j=2이라고 가정한다.
  • L=0일때 i의 1이 몇번째인지 탐색한다. -> 2번째 , ps=2
  • L=0일때 j의 1이 몇번째인지 탐색한다. -> 4번째 , py=4
  • ps가 py보다 크다는 것은 i가 j보다 앞에있다는 뜻이다.
    그러므로 cnt +=1 해준다.
  • cnt가 L의 값과 같다면 모두 i가 j보다 앞에있는 것이다.
    그러므로 (1,2)는 조건을 만족한다. -> answer += 1
profile
Live the way you think

0개의 댓글