[백준] 3980 선발 명단 - JAVA

2025. 1. 29. 09:32·Algorithm

백준 3980 선발 명단 Gold V - JAVA 📌

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

문제 설명

문제 풀이


접근 💡

요새 최적화에 관심이 많아져서 완전탐색을 떠올리지 않고 문제에 접근했던 것 같다.. 반성하고 자숙하자.. 모든 알고리즘의 시초는 완전탐색이다!!!

 

본론으로 들어가서

 

현재 선택하고 있는 포지션을다음 선수는 선택할 수 없을 때 포지션 점수의 최댓값을 구하는 문제이다.

모든 포지션을 선택했을 때 최댓값을 갱신해주면 되는 간단한 문제였다.

 

한 행(선수)의 포지션을 선택했을 때, 다음 행(선수)로 넘어가서 겹치지 않는 포지션을 선택하는 모~~~~~~~든 경우의 수를 구해 최댓값을 구하면 된다. 코드로 알아보자  

코드 💡

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

/**
 * 모든 경우의 수를 탐색하는 문제이다.
 * 현재 행에서 고른 포지션은 다음 행에서 고르면 안됨!. 그리고 0은 그냥 무시하기
 */
public class Main {

    static int[][] position;
    static boolean[] visited;
    static int ans;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int T = Integer.parseInt(br.readLine());
        for (int tc = 0; tc < T; tc++) {
            position = new int[11][11];
            for (int i = 0; i < 11; i++) {
                st = new StringTokenizer(br.readLine());
                for (int j = 0; j < 11; j++) {
                    position[i][j] = Integer.parseInt(st.nextToken());
                }
            }

            visited = new boolean[11];
            ans = 0;
            backTracking(0, 0);
            System.out.println(ans);
        }
    }

    private static void backTracking(int pos, int total) {
        if (pos == 11) {
            ans = Math.max(ans, total);
            return;
        }

        for (int i = 0; i < 11; i++) {
            if (!visited[i] && position[pos][i] != 0) {
                visited[i] = true;
                backTracking(pos + 1, total + position[pos][i]);
                visited[i] = false;
            }
        }
    }
}

'Algorithm' 카테고리의 다른 글

[백준] 18428 감시 피하기 - JAVA  (1) 2025.02.02
[백준] 15662 톱니바퀴 (2) - JAVA  (1) 2025.01.27
[백준] 2156 포도주 시식 -JAVA  (0) 2025.01.27
[백준] 2512 예산 - JAVA  (0) 2025.01.19
[알고리즘] Topological Sort - 위상 정렬  (2) 2024.11.10
'Algorithm' 카테고리의 다른 글
  • [백준] 18428 감시 피하기 - JAVA
  • [백준] 15662 톱니바퀴 (2) - JAVA
  • [백준] 2156 포도주 시식 -JAVA
  • [백준] 2512 예산 - JAVA
의중
의중
  • 의중
    개발어려워
    의중
  • 전체
    오늘
    어제
    • 전체글 (29)
      • Algorithm (12)
      • SSAFY (1)
      • 자료구조 (4)
      • 운영체제 (2)
      • JAVA (2)
      • ML, DL (0)
      • BackEnd (4)
      • DevOps (1)
      • 네트워크 (3)
  • hELLO· Designed By정상우.v4.10.3
의중
[백준] 3980 선발 명단 - JAVA
상단으로

티스토리툴바