본문 바로가기
PS/BOJ

[자바] 백준 9076 - 점수 집계 (java)

by Nahwasa 2023. 1. 25.

 문제 : boj9076


 

필요 알고리즘 개념

  • 정렬, 구현
    • 정렬을 이용해 문제에서 제시된대로 구현해주는 문제이다.

※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.

 


 

풀이

로직은 아래와 같다.

 

각 테스트마다
[A]____5개의 점수를 입력받는다.
[B]____5개를 정렬한다. (정렬 후 1번째와 5번째 값은 최고점과 최저점이므로 무시한다.)
[C]________if 2번째 점수와 4번째 점수가 4이상 차이난다면 KIN을 출력한다.
[D]________else 아니라면 2번째점수+3번째점수+4번째점수를 출력한다.

 

public String solution() throws Exception {
        int[] arr = new int[5];
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        // [A]
        for (int i = 0; i < 5; i++) 
        	arr[i] = Integer.parseInt(st.nextToken());
        
        // [B]
        Arrays.sort(arr);
        
        // [C]
        if (arr[1]+4<=arr[3]) 
        	return "KIN";
            
        // [D]
        return String.valueOf(arr[1]+arr[2]+arr[3]);
    }

 


 

코드 : github

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

public class Main {
    private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in), 1<<16);

    public static void main(String[] args) throws Exception {
        Main main = new Main();
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        while (t-->0) sb.append(main.solution()).append('\n');
        System.out.print(sb);
    }

    public String solution() throws Exception {
        int[] arr = new int[5];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < 5; i++) arr[i] = Integer.parseInt(st.nextToken());
        Arrays.sort(arr);
        if (arr[1]+4<=arr[3]) return "KIN";
        return String.valueOf(arr[1]+arr[2]+arr[3]);
    }
}

댓글