"꾸준하고 완벽한 한 걸음"

PS/Baekjoon Online Judge

[백준 28238] 정보 선생님의 야망 [Java]

kimyoungrok 2025. 4. 22. 14:54
728x90

문제

https://www.acmicpc.net/problem/28238

 


풀이

주어진 N명의 학생들의 시간표를 보고 가장 많은 학생들이 두 번의 수업에 참여할 수 있는 날과, 참여할 수 있는 인원을 구하는 문제다.

학생의 수와 요일의 곱이므로 모든 경우를 다 생각해볼 수 있다.

모든 경우에 대한 합을 구하고, 합이 갱신될 때 마다 두 요일을 기록해두면 된다.

        // Solve
        int a = -1, b = -1;
        int max = -1;
        for (int i = 0; i < 5; ++i) {
            for (int j = i + 1; j < 5; ++j) {
                int cnt = 0;
                for (int k = 0; k < N; ++k) {
                    if (count[k][i] + count[k][j] == 2)
                        ++cnt;
                }
                if (cnt > max) {
                    a = i;
                    b = j;
                    max = cnt;
                }
            }
        }

두 요일에 해당하는 날은 1로 나머지는 0으로 출력해주면 된다.

        // Output
        sb.append(max).append("\\n");
        for (int i = 0; i < 5; ++i) {
            sb.append(i == a || i == b ? 1 : 0).append(" ");
        }
        System.out.println(sb);
    }
}

풀이 시간

≤ 20m


소스코드

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

 

728x90