Backend
home
💯

[백준] 점수 계산

생성일
2025/04/01 09:10
태그
BaekJoon
게시일
2025/04/01
최종 편집 일시
2025/04/07 06:56

문제

해결 방안 고민

가장 높은 점수 5개의 합을 구한다 → 5개 수의 합을 구해야 한다.
가장 높은 점수 5개에 해당하는 인덱스를 출력해야 한다.

해결 방법

입력받은 8개의 숫자들로 배열을 생성하였다.
copyOfRange 를 활용하여 생성한 배열을 복사하여 rank 배열을 생성하였다.
rank 배열을 정렬하여 가장 높은 점수 5개의 합을 구했다.
기존 배열과 rank 배열의 특정 구간(rank[7] ~ rank[3]) 까지를 비교하여 배열 요소가 일치할 경우 인덱스에 1을 더하여 출력할 수 있는 로직을 구성하였다.

코드

package algo250401; import java.io.*; import java.util.Arrays; // 백준 - 점수 계산 (실버 5) // 참가자의 총 점수는 가장 높은 점수 5개의 합 // 20 30 50 48 33 66 0 64 public class Baek2822 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int[] arr = new int[8]; int length = arr.length; for (int i = 0; i < length; i++) { arr[i] = Integer.parseInt(br.readLine()); } // 랭킹 배열 생성 int[] rank = Arrays.copyOfRange(arr, 0, 8); // 랭킹 배열 정렬 Arrays.sort(rank); int sum = rank[7] + rank[6] + rank[5] + rank[4] + rank[3]; bw.write(String.valueOf(sum)); bw.newLine(); for (int i = 0; i < length; i++) { for (int j = length - 1; j >= 3; j--) { if (arr[i] == rank[j]) { bw.write(i + 1 + " "); } } } bw.flush(); bw.close(); br.close(); } }
Java
복사