티스토리 뷰

반응형

https://softeer.ai/practice/info.do?idx=1&eid=394 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

[문제]

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

 

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

 

[풀이]

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


public class Main
{
   static int N; // 2<= N <=100000
	static int M; // 1<= M <=100000
	static int[][] W; // 1<= W <=1000000000
	static int A[], B[]; // 1<= A , B<= N, A != B
	static int COUNT = 0;
	
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		W = new int[N][2];
		A = new int[M];
		B = new int[M];
		
		st = new StringTokenizer(br.readLine());
		
		for (int i = 0; i < N; i++)
		{
			W[i][0] = Integer.parseInt(st.nextToken());
			W[i][1] = 1; // Best
		}
		
		for (int i = 0; i < M; i++)
		{
			st = new StringTokenizer(br.readLine());
			A[i] = Integer.parseInt(st.nextToken());
			B[i] = Integer.parseInt(st.nextToken());
			
			if (W[A[i] - 1][0] < W[B[i] - 1][0])
			{
				W[A[i] - 1][1] = 0;
			} else if (W[B[i] - 1][0] < W[A[i] - 1][0])
			{
				W[B[i] - 1][1] = 0;
			} else if (W[A[i] - 1][0] == W[B[i] - 1][0])
			{
				W[A[i] - 1][1] = 0;
				W[B[i] - 1][1] = 0;
			}
		}
		
		for (int i = 0; i < N; i++)
		{
			if (W[i][1] == 1)
				COUNT++;
		}
		
		System.out.println(COUNT);
		
	}
}
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함