[Java] 백준 2822 (점수 계산)

2024. 4. 5. 12:42·BOJ, Programmers

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

 

2822번: 점수 계산

8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문

www.acmicpc.net

알고리즘 분류

  • 정렬

 

풀이

먼저 Node라는 인덱스와 점수를 담은 내부 클래스를 생성하였다.

 public static class Node{
        private int index;
        private int score;

        public Node(int index, int score) {
            this.index = index;
            this.score = score;
        }
    }

 

 

그리고 Node 클래스형 1차원 배열을 만든 후

객체를 생성하며 배열에 하나씩 담았다.

for (int i = 0; i < nodes.length; i++) {
            score = Integer.parseInt(br.readLine());
            node = new Node(i+1, score);
            nodes[i] = node;
        } // for

 

 

 

객체 score기준으로 내림차순으로 정렬 후 

배열을 하나 더 생성해 5등까지 배열 복사를 진행했다.

그리고 복사한 배열을 또 다시 index 기준으로 오름차순으로 정렬했다.

Arrays.sort(nodes, (o1, o2) -> o2.score - o1.score);
Node [] nodes2 = Arrays.copyOfRange(nodes,0,5);
Arrays.sort(nodes2, (o1, o2) -> o1.index - o2.index);

 

 

 

아래는 전체 정답 코드이다.

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

public class b_2822 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Node [] nodes = new Node [8];
        int score;

        Node node;
        for (int i = 0; i < nodes.length; i++) {
            score = Integer.parseInt(br.readLine());
            node = new Node(i+1, score);
            nodes[i] = node;
        } // for

        Arrays.sort(nodes, (o1, o2) -> o2.score - o1.score);
        Node [] nodes2 = Arrays.copyOfRange(nodes,0,5);
        Arrays.sort(nodes2, (o1, o2) -> o1.index - o2.index);

        StringBuilder sb = new StringBuilder();
        int sum = 0;
        for (int i = 0; i < 5; i++) {
            sum += nodes2[i].score;
            sb.append(nodes2[i].index).append(" ");
        }
        sb.substring(0, sb.length()-1);

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

    } // main

    public static class Node{
        private int index;
        private int score;

        public Node(int index, int score) {
            this.index = index;
            this.score = score;
        }
    }
}

 

New Code

'BOJ, Programmers' 카테고리의 다른 글

[Java] 백준 1926 (그림) 자바 문제 풀이  (0) 2024.04.05
[Java] 프로그래머스 (이중우선 순위 큐 )  (0) 2024.04.05
[JAVA] 백준 1041 (주사위)  (0) 2024.04.05
[Java] 백준 1500 (최대곱)  (0) 2024.04.03
[Java] 백준 1010번 (다리놓기)  (0) 2024.03.30
'BOJ, Programmers' 카테고리의 다른 글
  • [Java] 백준 1926 (그림) 자바 문제 풀이
  • [Java] 프로그래머스 (이중우선 순위 큐 )
  • [JAVA] 백준 1041 (주사위)
  • [Java] 백준 1500 (최대곱)
Economy98
Economy98
공부하고 기록하기
  • Economy98
    Economy_Dev
    Economy98
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Spring Framework (11)
      • BOJ, Programmers (22)
      • Java (4)
      • JDBC (6)
      • JPA (9)
      • Spring Transaction (3)
      • Algorithm (1)
      • Web (5)
      • Projects (2)
        • 쇼핑몰 프로젝트 (0)
        • 열람실 & 도서관 프로젝트 (2)
      • Network (2)
      • 나의 공부방 (5)
      • 끄적끄적 (1)
      • Error Log (3)
      • CS (0)
  • 블로그 메뉴

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

    • Github
  • 공지사항

  • 인기 글

  • 태그

    자바 문제 풀이
    다이나믹 프로그래밍
    자바
    예외 처리
    스프링부트
    브루트포스 알고리즘
    백준 자바 풀이
    자바 문제
    JPA
    propagation
    java
    Spring
    그리디 알고리즘
    restful api
    스프링
    정렬
    백준
    트랜잭션
    백준 풀이
    jdbc
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Economy98
[Java] 백준 2822 (점수 계산)
상단으로

티스토리툴바