https://www.acmicpc.net/problem/2822
1. 아이디어
람다식을 활용한 정렬과 방문체크로 해결했다.
2. 문제풀이
문제의 점수와 문제의 번호가 전부 필요한 상황이어서 이를 2차원 배열로 처리했다. 문제 점수를 기준으로 정렬해서 5문제의 합을 구했고 5문제의 번호를 boolean 타입 배열에 체크 후 다시 순회하며 StringBuilder에 넣어서 출력하는 방식으로 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int[][] arr = new int[1 + 8][2];
for (int i = 1; i <= 8; i++) {
arr[i][0] = i;
arr[i][1] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr, ((o1, o2) -> Integer.compare(o2[1], o1[1])));
int sum = 0;
boolean[] visited = new boolean[1 + 8];
for (int i = 0; i < 5; i++) {
sum += arr[i][1];
visited[arr[i][0]] = true;
}
sb.append(sum).append("\n");
for (int i = 1; i <= 8; i++) {
if (visited[i]) sb.append(i).append(" ");
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 1260번 - DFS와 BFS [Java] (0) | 2025.01.17 |
---|---|
[백준] 11724번 - 연결 요소의 개수 [Java] (0) | 2025.01.17 |
[백준] 13136번 - Do Not Touch Anything [Java] (0) | 2025.01.17 |
[백준] 10798번 - 세로읽기 [Java] (0) | 2025.01.17 |
[백준] 2506번 - 점수계산 [Java] (0) | 2025.01.17 |