백준 2822번: 점수 계산

won·2023년 3월 17일
0

알고리즘 문제풀이

목록 보기
26/32

2822번: 점수 계산

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

정렬 알고리즘만 알면 되는 간단한 문제다.

score 배열과 점수의 번호인 num 배열을 만들어 score배열을 정렬할 때 num배열도 같이 움직여 주었다.

그 뒤 num배열을 인덱스 0부터 4까지만 오름차순으로 정렬을 해주면 된다.

package problem_solved;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class n2822 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int[] score= new int[8];
		int[] num=new int[8];
		int sum=0;
		for(int i=0;i<score.length;i++) {
			score[i]  = Integer.parseInt(br.readLine());
			num[i]=i+1;
		}
		
		for(int i=0;i<score.length;i++) {
			for(int j=i+1;j<score.length;j++) {
				if(score[j]>score[i]) {
					swap(score,i,j);
					swap(num,i,j);
				}
			}
		}
		StringBuilder str= new StringBuilder();
		
		for(int i=0;i<5;i++) {
			for(int j=i+1;j<5;j++) {
				if(num[j]<num[i]) {					
					swap(num,i,j);
				}
			}
		}
		for(int i=0;i<5;i++) {
			sum+=score[i];
			str.append(num[i]+" ");
		}
		bw.write(String.valueOf(sum)+"\n"+str);
		bw.flush();
		br.close();
		bw.close();
		
		
	}
	public static void swap(int[] arr, int a, int b) {
		int temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
}
profile
뭐라도 하자

0개의 댓글