[Softeer] 6289번 우물 안 개구리 - Java

yseo14·2025년 1월 25일

코딩테스트 대비

목록 보기
48/88


문제링크

풀이

회원들의 번호와 들 수 있는 무게는 배열에 저장한다.
isBest라는 boolean 배열을 선언하고 true로 초기화해준다.
회원 간의 친분 관계는 인접리스트를 통해 저장한다.

각 회원마다 반복문을 돌면서 친분이 있는 회원과의 역기 무게를 비교하는데, 작거나 같으면 isBest 배열에서 그 회원의 인덱스에 해당하는 값을 false로 바꿔준다.

그리고 마지막에 true인 회원들만 카운트 해주면 된다.

코드

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

public class Main {
    static int n, m;
    static int[] weight;
    static boolean[] isBest;
    static ArrayList<ArrayList<Integer>> relation = new ArrayList<>();
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        weight = new int[n];
        isBest = new boolean[n];
        Arrays.fill(isBest, true);
        for(int i = 0; i < n; i++) {
            relation.add(new ArrayList<>());
        }
        
        st = new StringTokenizer(br.readLine());
        for(int i = 0; i < n; i++) {
            weight[i] = Integer.parseInt(st.nextToken());
        }

        
        for(int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine());
            int from = Integer.parseInt(st.nextToken()) - 1;
            int to = Integer.parseInt(st.nextToken()) - 1;

            relation.get(from).add(to);
            relation.get(to).add(from);
        }
        for(int i = 0; i < n; i++){
            func(i);
        }
        int count = 0;
        for(int i = 0; i < n; i++){
            if(isBest[i]){
                count++;
            }
        }
        System.out.println(count);
        
    }

    public static void func(int p){
        if(!isBest[p]){
            return;
        }
        for(int i = 0; i < relation.get(p).size(); i++) {
            if(weight[p] <= weight[relation.get(p).get(i)]){
                isBest[p] = false;
                return;
            }
        }
    }
    
}

2단계는 난이도가 너무 낮은거 같아서 3단계를 골라서 풀었는데 생각보다 너무 쉽게 풀렸다. 다른 3단계에 비해 굉장히 쉬운거 같기도하고, 더 좋은 코드가 있을 거 같아서 다음에 다시 한번 풀어보거나 다른 사람의 풀이를 찾아봐야겠다.

profile
like the water flowing

0개의 댓글