https://softeer.ai/practice/6289
문제 풀이법
- 입력 데이터 준비:
- 첫 번째 입력 줄에서 무게의 개수와 친구 관계의 수를 입력받아 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로 설정합니다.
- 각 친구 관계에 대해, 입력으로 주어지는 두 친구 A와 B의 무게를 비교합니다:
- 결과 계산:
- 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);
}
}
'Development > PS' 카테고리의 다른 글
[이분 탐색] 프로그래머스 Level 3 입국심사 Java 풀이 (1) | 2024.03.07 |
---|---|
[String] [한양대 HCPC 2023] X marks the Spot Java 풀이 ( + 시간 초과 해결) (0) | 2024.02.01 |
[Greedy] Softeer(소프티어) level 2 진정한 효도 Java 풀이 (0) | 2024.01.31 |
[Greedy] Softeer(소프티어) level 2 연탄의 크기 java 풀이 (1) | 2024.01.30 |
[Greedy] Softeer(소프티어) level 3 강의실 배정 java 풀이 (+Comparator에 관하여) (1) | 2024.01.29 |