[백준/C++] 14889 스타트와 링크

2024. 1. 14. 11:51· Koala - 13기/코딩테스트 준비 스터디
목차
  1. 문제 요약
  2. 문제 해결

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

 

14889번: 스타트와 링크

예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.

www.acmicpc.net

문제 요약

팀원 간 조합에 대한 점수가 2차원 배열이 입력 주어질 때, 
구성원을 2팀으로 나누는 모든 경우에 대하여,
(각 팀의 총 점수)의 차가 최소가 될 때의 그 값을 출력

문제 해결

  • 최소값을 구해야 하므로 팀을 구성할 수 있는 모든 경우의 수를 살펴보아야 한다.
  • 팀원 간 조합을 모두 따져봐야하므로 백트래킹을 시도한다.
    사람의 수가 4~20의 짝수 이므로, 최대 20C2의 조합의 개수가 발생하고, 2차원 배열의 크기가 최대 400이므로 2초안에 풀 수 있을 것이다.
  • score[i][j] != score[j][i] 인 것에 유의 한다.
#include <iostream>
#include <vector>


int min_val = INT_MAX;
int n;
int arr[20][20];

using namespace std;
void go(int start, int count, int* check){
    if(count == n/2){
        int s=0, l=0;
        vector<int> start;
        vector<int> link; 
        for(int i = 0; i < n; i++)
        {
            if(check[i]) 
                start.push_back(i);
            else 
                link.push_back(i);
        }

        for(int i = 0; i<n/2; i++){
            for(int j=0; j<n/2; j++){
                s += arr[start[i]][start[j]];
                l += arr[link[i]][link[j]];
            } 
        }

        int diff = s-l;
        if(diff<0) diff *= -1;

        if(diff < min_val) min_val = diff;
        return;
    }

    for(int i=start; i<n; i++){
        if (!check[i]){
            check[i] = 1;
            go(i, count+1, check);
            check[i] = 0;
        } 
    }
}

int main(){
    cin >> n;

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cin >> arr[i][j];
        }
    }

    int check[n] = {0};
    go(0, 0, check);

    cout << min_val;
}

각 팀의 점수를 계산할 때, score[i][j] != score[j][i] 인 것과 score[i][i]=0 인 것에 유의하여 코드를 작성하였다.

저작자표시 (새창열림)

'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/Python] 15663번: N과 M (9)  (0) 2024.01.14
[백준/C++] 6603번: 로또  (0) 2024.01.14
[백준/C++] 2003번: 수들의 합 2  (0) 2024.01.13
[백준/Python] #2548 대표 자연수  (0) 2024.01.13
[Baekjoon/C++] 15654: N과 M (5)  (0) 2024.01.12
  1. 문제 요약
  2. 문제 해결
'Koala - 13기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/Python] 15663번: N과 M (9)
  • [백준/C++] 6603번: 로또
  • [백준/C++] 2003번: 수들의 합 2
  • [백준/Python] #2548 대표 자연수
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1888)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (42)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (35)
    • Koala - 20기 (0)
      • 코딩테스트 기초 스터디 (0)
      • 코딩테스트 심화 스터디 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • 백트래킹
  • 백준
  • dfs
  • 파이썬
  • C++
  • dp
  • BFS
  • BOJ

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/C++] 14889 스타트와 링크
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.