[백준 27922] 현대모비스 입사 프로젝트 [Java]

2025. 7. 25. 14:29PS 풀이/Baekjoon Online Judge

문제

http://boj.ma/27922

 

27922번: 현대모비스 입사 프로젝트

 

boj.ma

 


풀이

문제 요약

N개의 강의 중 K개의 강의만 선택했을 때 얻을 수 있는 두 종류 역량의 합의 최댓값을 구하자.

아이디어

각 역량의 합에 대한 최댓값이 두 종류 역량의 합의 최댓값이 된다는 보장은 없다. 따라서 주어진 강의에 대해 두 종류 역량의 합에 대한 모든 경우의 수를 구해야 한다.

        // Solve
        int[][] status = new int[3][N];
        /*
        0 : a + b
        1 : b + c
        2 : c + a
         */
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            final int a = Integer.parseInt(st.nextToken());
            final int b = Integer.parseInt(st.nextToken());
            final int c = Integer.parseInt(st.nextToken());
            status[0][i] = a + b;
            status[1][i] = b + c;
            status[2][i] = c + a;
        }

가능한 모든 두 종류 역량의 합에 대해 정렬 후, 가장 큰 K개에 대한 합을 서로 비교 후 최댓값을 출력하면 된다.

        for (int i = 0; i < 3; ++i) {
            Arrays.sort(status[i]);
        }

        int[] sumStatus = new int[3];
        for (int k = N - 1; k >= N - K; --k) {
            sumStatus[0] += status[0][k];
            sumStatus[1] += status[1][k];
            sumStatus[2] += status[2][k];
        }

        // Output
        System.out.println(Math.max(sumStatus[0],
                Math.max(sumStatus[1], sumStatus[2])));
    }
}

풀이 시간

5분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/27922.java

 

problem-solving/baekjoon-online-judge/easy/27922.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com