[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
  • 전체
    오늘
    어제
    • 분류 전체보기 (75) N
      • Spring Framework (12) N
      • 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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바