
접근법
두 차례의 런에서 받은 최고 점수와 다섯 차례의 트릭 연기를 통해 받은 점수 중 상위 2개의 점수,
총 3개의 점수를 더한 값이 최종 점수가 된다.
출전한 선수들의 점수표가 주어졌을 때, 우승자의 최종 점수를 구해 보자.
2
1 2 4 2 3 1 1
5 5 5 5 5 5 5
입력을 위와 같이 받았을 때
1 2
, 4 2 3 1 1
으로 run 과 trick 으로 나누어 저장하여 run 의 상위 1개, trick 의 상위 2개의 값을 더한다.Collections.sort(runList, Collections.reverseOrder());
을 사용하여 저장된 값을 내림차순 정렬한 뒤runList, trickList 의 0, 0, 1번째 값을 모두 더하여 기존 값과 비교하여 저장한다.
풀이
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.nextLine();
int maxScore = 0;
for(int i=0; i<N; i++) {
String input = sc.nextLine();
String[] split = input.split(" ");
List<Integer> runList = new ArrayList<>();
List<Integer> trickList = new ArrayList<>();
runList.add(Integer.parseInt(split[0]));
runList.add(Integer.parseInt(split[1]));
for (int j = 2; j < split.length && j <= 6; j++) {
trickList.add(Integer.parseInt(split[j]));
}
Collections.sort(runList, Collections.reverseOrder());
Collections.sort(trickList, Collections.reverseOrder());
Integer score = runList.get(0)+trickList.get(0)+trickList.get(1);
if(score > maxScore) {
maxScore = score;
}
}
System.out.println(maxScore);
sc.close();
}
}
Share article