study/알고리즘 문제 풀이

[javaScript] Softeer - 우물 안 개구리

dddzr 2024. 2. 4. 23:44

https://softeer.ai/class/devcrew/study/resource/detail/description/6289?id=155&resourceId=81

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

난이도 3 단계 참가자 90 명 제출 139 명 정답률 69.78 % 언어별 시간/메모리 언어별 시간/메모리 표 언어 시간 메모리 JavaScript 2초 256MB C 1초 256MB C++ 1초 256MB Java 2초 256MB Python 2초 256MB 헬스장에서 N명

softeer.ai

 

언어별 시간/메모리
언어시간메모리
JavaScript 2초 256MB
C 1초 256MB
C++ 1초 256MB
Java 2초 256MB
Python 2초 256MB

헬스장에서 N명의 회원이 운동을 하고 있다. 각 회원은 1에서 N사이의 번호가 부여되어 있고, i번 회원이 들 수 있는 역기의 무게는 Wi이다. 회원들 사이에는 M개의 친분관계 (Aj, Bj)가 있다. (Aj, Bj)는 Aj번 회원과 Bj번 회원이 친분 관계가 있다는 것을 의미한다. i번 회원은 자신과 친분 관계가 있는 다른 회원보다 들 수 있는 역기의 무게가 무거우면 자신이 최고라고 생각한다. 단, 누구와도 친분이 없는 멤버는 본인이 최고라고 생각한다.

 

이 헬스장에서 자신이 최고라고 생각하는 회원은 몇 명인가?

제약조건

2 ≤ N ≤ 105
1 ≤ M ≤ 105
1 ≤ Wi ≤ 109
1 ≤ Aj, Bj ≤ N
Aj ≠ Bj

입력형식

첫 번째 줄에 두 정수 N, M이 주어진다.
두 번째 줄에 N개의 정수 W1, W2, ... , WN 이 주어진다.

다음 M개의 줄의 j번째 줄에는 두 정수 Aj, Bj 가 주어진다.

출력형식

첫 번째 줄에 자신이 최고라고 생각하는 회원 수를 출력한다.

입력예제1

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

출력예제1

3

입력예제2

5 3 7 5 7 7 1 1 2 2 3 3 4

출력예제2

2

 

 

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

let N, M;
let count = 0;
let wList = [];
let mList = [];
rl.on('line', function(x){
    if(count == 0){
        [N,M] = x.split(' ').map(Number);
    }else if(count == 1){
        wList = x.split(' ').map(Number);
    }else if(count <=  1+M){
        mList.push(x.split(' ').map(Number));
    }else{
        rl.close();
    }
    count++;
    
}).on('close', function(){
    mainFunc();
})

function mainFunc(){
    let bestMember = new Array(N).fill(true);
    for(let j = 0 ; j < mList.length; j++){
        let person1 = mList[j][0] - 1;
        let person2 = mList[j][1] - 1;
        if (wList[person1] < wList[person2]) {
            bestMember[person1] = false;
        }else if (wList[person1] > wList[person2]) {
            bestMember[person2] = false;
        }else{
            bestMember[person1] = false;
            bestMember[person2] = false;
        }
    }
    console.log(bestMember.filter((el) => el).length);
}