본문 바로가기
알고리즘/SWEA

[Java] SWEA 6719번 성수의 프로그래밍

by 컴공맨 2021. 3. 10.
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이

처음에는 순열로 접근했다가 시간초과가 발생해서 문제를 다시 보았는데 굳이 순열을 쓸 필요없이 입력받은 과목의 수준을 정렬해서 숫자가 큰 순서대로 K개를 뽑아 K개에서 가장 작은 수 부터 실력을 갱신하여 해결했습니다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Solution {
	public static int N, K;
	public static double answer;
	public static Integer[] subject;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		StringTokenizer st;
		
		int T = Integer.parseInt(br.readLine());
		for (int tc = 1; tc <= T; ++tc) {
			st = new StringTokenizer(br.readLine(), " ");
			
			N = Integer.parseInt(st.nextToken());
			K = Integer.parseInt(st.nextToken());
			
			subject = new Integer[N];
			
			answer = 0;
			
			st = new StringTokenizer(br.readLine(), " ");			
			for (int i = 0; i < N; ++i) {
				subject[i] = Integer.parseInt(st.nextToken());
			}
			
			Arrays.sort(subject);
			
			for (int i = N - K; i < N; ++i) {
				answer = (answer + (double)subject[i]) / 2.0;
			}
			
			sb.append("#").append(tc).append(" ").append(String.format("%.6f", answer)).append("\n");
		}
		
		System.out.println(sb);
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com