[백준] 2822번 : 점수 계산 (JAVA)

2026. 3. 20. 16:07·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

https://www.acmicpc.net/problem/2822


📌 문제 개요

8개의 점수가 주어질 때,

가장 높은 점수 5개의 합과 해당 점수들의 문제 번호를 출력하는 문제
단, 문제 번호는 오름차순으로 출력해야 한다.


📌 접근 방법

  • 점수만 정렬하면 문제 번호를 잃어버리기 때문에 (점수, 번호) 형태로 함께 저장
  • 점수 기준으로 내림차순 정렬 후 상위 5개를 선택한다.
  • 선택된 문제 번호는 따로 배열에 저장 후 오름차순 정렬하여 출력한다.

📌 핵심 아이디어

  • 정렬 기준이 2개 존재한다.
    1. 점수 기준 → 내림차순
    2. 번호 기준 → 오름차순

따라서 한 번에 처리하지 않고

선택 → 재정렬 구조로 해결


📌 전체 코드

package no_2822;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class No2822 {
    static class Score {
        int value;
        int index;

        public Score(int value, int index){
            this.value = value;
            this.index = index;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Score[] arr = new Score[8];

        for(int i = 0; i < 8; i++){
            arr[i] = new Score(Integer.parseInt(br.readLine()), i + 1);
        }

        // 점수 기준 내림차순 정렬
        Arrays.sort(arr, (a, b) -> Integer.compare(b.value, a.value));

        int sum = 0;
        int[] selected = new int[5];

        // 상위 5개 선택
        for(int i = 0; i < 5; i++){
            sum += arr[i].value;
            selected[i] = arr[i].index;
        }

        // 번호 오름차순 정렬
        Arrays.sort(selected);

        StringBuilder sb = new StringBuilder();
        for(int num : selected){
            sb.append(num).append(" ");
        }

        System.out.println(sum);
        System.out.println(sb);
    }
}

🧾 정리

  • 객체 배열을 활용해 (점수, 번호)를 함께 관리
  • Comparator를 이용한 정렬 방식 이해가 중요
  • 서로 다른 정렬 기준이 있을 경우 → 분리해서 처리
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 9093 단어 뒤집기 JAVA 풀이 (문자열, 구현, 시간복잡도)  (0) 2026.03.22
백준 1924 2007년 JAVA 풀이 (구현, 시간복잡도)  (0) 2026.03.21
[백준] 10867번 : 중복 빼고 정렬하기 (JAVA)  (0) 2026.03.19
[백준] 2161번 : 카드1 (JAVA)  (0) 2026.03.18
[백준] 2740번 : 행렬 곱셈 (JAVA)  (0) 2026.03.17
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 9093 단어 뒤집기 JAVA 풀이 (문자열, 구현, 시간복잡도)
  • 백준 1924 2007년 JAVA 풀이 (구현, 시간복잡도)
  • [백준] 10867번 : 중복 빼고 정렬하기 (JAVA)
  • [백준] 2161번 : 카드1 (JAVA)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    수학
    배열
    브루트포스
    정처기오답노트
    dp
    springboot
    정보처리기사
    기출문제
    백준
    level1
    정처기
    정처기실기
    구현
    level0
    피보나치
    완전탐색
    자료구조
    정렬
    시뮬레이션
    java
    프로그래머스
    자바
    문자열
    정보처리기사 실기 기출문제
    실기
    백엔드개발자
    solved.ac
    Level2
    코딩테스트
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
[백준] 2822번 : 점수 계산 (JAVA)
상단으로

티스토리툴바