본문 바로가기
알고리즘

[백준/JAVA] 17509. And the Winner Is... Ourselves!

by 상후 2021. 11. 2.
728x90
반응형

 

 

https://github.com/ROUTINE-STUDY/Algorithm

알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.

문제 출처 : https://www.acmicpc.net/problem/17509

 

17509번: And the Winner Is... Ourselves!

11 lines are given as the input. The $i$-th line contains two space-separated integers, $D_i$ and $V_i$, where $D_i$ is the amount of minutes required to solve the $i$-th problem, and $V_i$ is the number of incorrect verdicts on the $i$-th problem. For eac

www.acmicpc.net

문제 설명

출처 : 백준

내 코드(JAVA)

 

public class Main {

    private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    private static final List<String> testCaseList = new ArrayList<>();

    public static void main(String[] args) throws IOException {
        inputTestCase();
        doCalc();
    }

    private static void doCalc() throws IOException {
        int result = 0;
        int beforeTime = 0;
        int penaltyCnt = 0;

        testCaseList.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int parseInt1 = Integer.parseInt(o1.split(" ")[0]);
                int parseInt2 = Integer.parseInt(o2.split(" ")[0]);

                if(parseInt1 > parseInt2) return 1;
                else if(parseInt1 < parseInt2) return -1;
                return 0;
            }
        });

        for(String testCase : testCaseList) {
            String[] records = testCase.split(" ");
            int solvingTime = Integer.parseInt(records[0]);
            penaltyCnt += Integer.parseInt(records[1]);

            result += (beforeTime + solvingTime);
            beforeTime += solvingTime;
        }
        result += (20 * penaltyCnt);

        bw.write(String.valueOf(result));
        bw.flush();
        bw.close();
    }

    private static void inputTestCase() throws IOException {
        for(int i=0; i<11; i++) {
            testCaseList.add(br.readLine());
        }
        br.close();
    }

}

 

스터디 피드백 내용

Comparator를 사용하여 정렬하는 부분을 리팩토링했습니다.

 

 

 

 

 

728x90
반응형

댓글