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 |