관리 메뉴

Daehyunii's Dev-blog

λ©˜ν† λ§(μ™„μ „ 탐색) λ³Έλ¬Έ

πŸ“š Language & CS knowledge/Algorithm (κΈ°μ΄ˆλ¬Έμ œν’€μ΄)

λ©˜ν† λ§(μ™„μ „ 탐색)

Daehyunii 2022. 8. 31. 23:52

문제(좜처 : μΈν”„λŸ° μžλ°”μŠ€ν¬λ¦½νŠΈ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ κ°•μ˜, μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ)

 

ν˜„μˆ˜λ„€ 반 μ„ μƒλ‹˜μ€ 반 ν•™μƒλ“€μ˜ μˆ˜ν•™μ μˆ˜λ₯Ό ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ λ©˜ν† λ§ μ‹œμŠ€ν…œμ„ λ§Œλ“€λ €κ³  ν•©λ‹ˆ λ‹€. λ©˜ν† λ§μ€ λ©˜ν† (λ„μ™€μ£ΌλŠ” 학생)와 λ©˜ν‹°(도움을 λ°›λŠ” 학생)κ°€ ν•œ 짝이 λ˜μ–΄ λ©˜ν† κ°€ λ©˜ν‹°μ˜ μˆ˜ν•™κ³΅λΆ€λ₯Ό λ„μ™€μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. μ„ μƒλ‹˜μ€ M번의 μˆ˜ν•™ν…ŒμŠ€νŠΈ λ“±μˆ˜λ₯Ό 가지고 λ©˜ν† μ™€ λ©˜ν‹°λ₯Ό μ •ν•©λ‹ˆλ‹€. λ§Œμ•½ A학생이 λ©˜ν† μ΄κ³ , B학생이 λ©˜ν‹°κ°€ λ˜λŠ” 짝이 λ˜μ—ˆλ‹€λ©΄, A학생은 M번의 μˆ˜ν•™ν…ŒμŠ€νŠΈμ—μ„œ λͺ¨λ‘ B학생보닀 λ“±μˆ˜κ°€ μ•žμ„œμ•Ό ν•©λ‹ˆλ‹€. M번의 μˆ˜ν•™μ„±μ μ΄ 주어지면 λ©˜ν† μ™€ λ©˜ν‹°κ°€ λ˜λŠ” 짝을 λ§Œλ“€ 수 μžˆλŠ” κ²½μš°κ°€ 총 λͺ‡ 가지 인지 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

β–£ μž…λ ₯μ„€λͺ…
첫 번째 쀄에 반 학생 수 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등을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

β–£ 좜λ ₯μ„€λͺ…
첫 번째 쀄에 짝을 λ§Œλ“€ 수 μžˆλŠ” 총 경우λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

 

β–£ μž…λ ₯예제 1

43
3412 4321 3142

 

β–£ 좜λ ₯예제 1

3

(3, 1), (3, 2), (4, 2)와 같이 3가지 경우의 (λ©˜ν† , λ©˜ν‹°) 짝을 λ§Œλ“€ 수 μžˆλ‹€.

 

Tip

 

 

λ¬Έμ œν’€μ΄

//κ°•μ˜ λ“£κ³  λ‚΄κ°€ λ‹€μ‹œ μž‘μ„±ν•œ λ‹΅
function solution(arr){
    let result = 0;
    let students = arr[0].length;
    let test = arr.length;

    for(let i = 1 ; i <= students ; i++){
        for(let j = 1 ; j <= students ; j++){
            let count = 0;
            for(let k = 0 ; k < test ; k++){
                let p1 = 0;
                let p2 = 0;
                for(let s = 0 ; s < students ; s++){
                    if(arr[k][s] === i) p1 = s;
                    if(arr[k][s] === j) p2 = s;
                }
                if(p1 < p2) count++;
            }
            if(test === count) result++;
        }
    }
    return result;
}

let arr1=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
console.log(solution(arr1));