반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 2822번 점수 계산 자바(JAVA)

1) 문제번호 : 2822

 

2) 문제 출처

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

 

2822번: 점수 계산

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

www.acmicpc.net

 

2. 문제

상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.

상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.

 

 

3. 제약사항

 

4. 입력

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

 

5. 출력

첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.

 

6. 풀이

- 값을 입력받은 score 리스트와 같은 tempScore를 만든다.

- 리스트에서 최댓값을 찾은 다음, 총합에 더하고 총합의 인덱스를 찾아서 그 인덱스를 +1을 더해 저장한 다음, tempScore 리스트의 인덱스를 삭제한다.

 

7. 소스 코드

package algo;

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		List<Integer> score = new ArrayList<>();
		
		//점수 입력
		for(int i = 0; i < 8; i++) {
			score.add(Integer.parseInt(br.readLine()));
		}
		
		int sumScore = 0; // 총합
		
		List<Integer> tempScore = new ArrayList<>();
		
		for(Integer scoreNum : score) {
			tempScore.add(scoreNum);
		}
		
		List<Integer> maxIndex = new ArrayList<>();
		
		//총합과 최댓값 인덱스 저장하기
		for(int i = 0; i < 5; i++) {
			int maxScore = Collections.max(tempScore);

			sumScore += maxScore;
			
			int maxScoreIdx = score.indexOf(maxScore);

			maxIndex.add(maxScoreIdx+1);
			
			int tempMaxScoreIdx = tempScore.indexOf(maxScore);
			
			tempScore.remove(tempMaxScoreIdx);
		}
		
		//오름차순 정렬
		Collections.sort(maxIndex);
		
		//출력
		System.out.println(sumScore);
		
		for(Integer mScoreIdx : maxIndex) {
			System.out.print(mScoreIdx + " ");
		}
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기