[Array] Softeer(소프티어) level 3 우물 안 개구리 Java 풀이
본문 바로가기

Development/PS

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

https://softeer.ai/practice/6289

 

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

 

softeer.ai

문제 풀이법

 

  • 입력 데이터 준비:
    • 첫 번째 입력 줄에서 무게의 개수와 친구 관계의 수를 입력받아 numOfWeight와 numOfFriend 변수에 저장합니다.
    • 무게를 저장할 arrOfWeight라는 크기 (numOfWeight + 1)의 int 배열과, 각 친구가 최고 무게를 기록할 가능성이 있는지를 나타내는 isBest라는 boolean 배열을 생성합니다. isBest 배열은 모든 인덱스를 true로 초기화합니다. (인덱스를 1부터 사용하기 위해 배열 크기를 하나 더 크게 설정합니다.)
  • 무게 입력 받기:
    • 두 번째 입력 줄에서 각 무게를 읽어와 arrOfWeight 배열에 저장합니다.
  • 친구 관계 정보 처리:
    • 각 친구 관계에 대해, 입력으로 주어지는 두 친구 A와 B의 무게를 비교합니다:
      • arrOfWeight[A] < arrOfWeight[B]인 경우, A는 무게에서 B에게 지므로 isBest[A]를 false로 설정합니다.
      • arrOfWeight[A] == arrOfWeight[B]인 경우, A와 B가 무게에서 비겼으므로 isBest[A]와 isBest[B]를 모두 false로 설정합니다.
      • arrOfWeight[A] > arrOfWeight[B]인 경우, B는 무게에서 A에게 지므로 isBest[B]를 false로 설정합니다.
  • 결과 계산:
    • isBest 배열을 순회하며 true로 남아 있는 인덱스의 개수를 세어 answer 변수에 저장합니다.
    • answer를 출력합니다.

 

코드

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);
    }
}