[백준] 14889번, 스타트와 링크 (Python)

2021. 7. 4. 21:20·알고리즘/백준
728x90
반응형

문제

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

 

코드

n = int(input())
graph = [list(map(int, input().split(" "))) for _ in range(n)]
curMin = 10000000
check = [False] * n


def recursive(index, count1, count2, sum1, sum2):
    global curMin
    if index == n:
        if count1 == count2:
            curMin = min(curMin, abs(sum1 - sum2))
        return
    
    check[index] = True
    temp = 0
    for i in range(index):
        if check[i] == True:
            temp += graph[i][index] + graph[index][i]
    recursive(index+1, count1+1, count2, sum1+temp, sum2)

    check[index] = False
    temp = 0
    for i in range(index):
        if check[i] == False:
            temp += graph[i][index] + graph[index][i]
    recursive(index+1, count1, count2+1, sum1, sum2+temp)

recursive(0, 0, 0, 0, 0)
print(curMin)

범위가 작아서 완전탐색 재귀풀이로 문제를 풀어보았다.

 

check[index]가 True일 경우 스타트팀, False일 경우 링크팀으로 계산한다.

for문을 돌아 if문 조건에 맞으면 같은팀 이므로 temp에 값을 저장하고 다시 재귀를 돌아준다.

 

탈출조건으로는 index가 n이랑 같아지면 더 깊은 재귀가 없으므로 return을 해주고 만약 count1, count2 둘이 같으면 curMin에 더 작은 값을 넣어준다.

 

ex)

true : 1, 2
false : 0
현재 인덱스 3으로 true이면 1,3 3,1 2,3 3,2에 값이 temp에 들어가고

기존 sum에 있는 값(1,2 2,1)에 더해줘서 스타트팀 1,2,3에 값이 sum1에 누적된다

 

반응형
저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1012번, 유기농 배추 (Python)  (0) 2021.07.06
[백준] 14502번, 연구소 (Python)  (0) 2021.07.06
[백준] 2309번, 일곱난쟁이 (Python)  (0) 2021.07.02
[백준] 1992번 쿼드트리 (Python)  (0) 2021.03.16
[백준] 11866번 요세푸스 문제 0 (Python)  (0) 2021.03.16
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 1012번, 유기농 배추 (Python)
  • [백준] 14502번, 연구소 (Python)
  • [백준] 2309번, 일곱난쟁이 (Python)
  • [백준] 1992번 쿼드트리 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    브루트포스
    후기
    인프런
    그리디
    백준
    카카오인턴
    orm
    해결
    코딩테스트
    정리
    조합
    파이썬
    jpa
    알고리즘
    spring
    java
    항해마켓
    버그
    카카오코딩테스트
    항해99
    SpringBoot
    괄호
    SFlash
    에러
    스파르타코딩클럽
    실전프로젝트
    회고
    미니프로젝트
    김영한
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 14889번, 스타트와 링크 (Python)
상단으로

티스토리툴바