본문 바로가기

Development/CodingTest

[Array] Softeer(소프티어) level 3 우물 안 개구리 Java 풀이

https://softeer.ai/practice/6289

 

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

 

softeer.ai

문제 풀이법

  1. 무게들을 저장하는 int 배열과, 사람 수 크기의 boolean 배열 생성(그리고 모두 true로 초기화)
  2. A > B면 boolean 배열에 B 인덱스를 false
    A == B면 boolean 배열에 A, B 인덱스를 false 
    A < B면 boolean 배열에 A 인덱스를 false
    즉, 한 번이라도 친구들끼리 무게에서 지거나 비겼으면 false로 바꿈
  3. 마지막으로 boolean 배열에 true의 개수를 리턴

코드

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());

        int numOfWeight = Integer.parseInt(st.nextToken());
        int numOfFriend = Integer.parseInt(st.nextToken());

        int[] arrOfWeight = new int[numOfWeight + 1];
        boolean[] isBest = new boolean[numOfWeight + 1];

        st = new StringTokenizer(in.readLine());
        for (int i = 1; i <= numOfWeight; i++) {
            arrOfWeight[i] = Integer.parseInt(st.nextToken());
            isBest[i] = true;
        }

        for (int j = 1; j <= numOfFriend; j++) {
            st = new StringTokenizer(in.readLine());
            int A = Integer.parseInt(st.nextToken());
            int B = Integer.parseInt(st.nextToken());
            if (arrOfWeight[A] < arrOfWeight[B]) {
                isBest[A] = false;
            } else if (arrOfWeight[A] == arrOfWeight[B]) {
                isBest[A] = false;
                isBest[B] = false;
            } else if (arrOfWeight[A] > arrOfWeight[B]) {
                isBest[B] = false;
            }
        }

        int answer = 0;
        for (boolean best : isBest) {
            if (best) {
               answer++; 
            }
        }
        System.out.println(answer);
    }
}