https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 최단경로
  • 백준
  • DFS
  • 이분 탐색
  • 그래프
  • 스택
  • DP
  • heapq
  • 다이나믹 프로그래밍
  • python3
  • LIS
  • 백트래킹
  • 큐
  • BFS
  • MST
  • 프로그래머스
  • 12015
  • 다이나믹프로그래밍
  • Python
  • 재귀함수
  • counter
  • 재귀
  • 최소힙
  • 최대공약수
  • 다익스트라
  • 그리디
  • 유클리드호제법
  • 이분탐색
  • 유니온 파인드
  • 파이썬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

백준 14889 풀이 (itertools,combinations)
알고리즘

백준 14889 풀이 (itertools,combinations)

2021. 2. 17. 14:51

이번에 itertools를 처음 배웠다. itertools는 자신만의 반복자를 만들기 위해서 사용되는 모듈이다. 즉 무엇인가 반복되는 요소를 쉽게 만들기 위해서 사용한다.

이 문제는 조합을 만들어야 하기 때문에 combinations를 함수에 대해서만 공부했다.

combinations는 조합을 만들어 주는 함수이다.

combinations([1,2,3,4], 2) 를 하면 4개의 수를 2조합으로 만들겠다는 의미다.

따라서 이러한 값을 이용해서 조합을 빠르게 구한다.

나는 조합을 못구해서 얼타다가 결국 고수의 코드를 참고하여 이해했다.

from itertools import combinations

N = int(input())
Nlist = [i for i in range(N)]
Map = []
for _ in range(N):
    Map.append(list(map(int,input().split())))
Team =[]
for team in list(combinations(Nlist,N//2)):
    Team.append(team)

Min = 1000
for i in range(len(Team)//2):
    team = Team[i]
    stat_A = 0
    for j in range(N//2):
        member = team[j]
        for k in team:
            stat_A += Map[member][k]
    team = Team[-i-1]
    stat_B = 0
    for j in range(N//2):
        member = team[j]
        for k in team:
            stat_B += Map[member][k]
    Min = min(Min, abs(stat_A - stat_B))
print(Min)

즉, 결론은 조합을 구하고 싶으면 itertools의 combinations를 사용하면 된다 이말이다!

'알고리즘' 카테고리의 다른 글

백준 1904 풀이 (재귀함수 인척하는 점화식 풀이)  (0) 2021.02.18
백준 9184 풀이 (재귀함수, 메모제이션, 다이나믹 프로그래밍)  (0) 2021.02.18
백준 14888 풀이 (재귀함수, 백트래킹, 연산자 끼워넣기)  (0) 2021.02.16
백준 9663 풀이 (백트래킹, 재귀함수)  (0) 2021.02.16
백준 15650 풀이 (재귀함수)  (0) 2021.02.15
    '알고리즘' 카테고리의 다른 글
    • 백준 1904 풀이 (재귀함수 인척하는 점화식 풀이)
    • 백준 9184 풀이 (재귀함수, 메모제이션, 다이나믹 프로그래밍)
    • 백준 14888 풀이 (재귀함수, 백트래킹, 연산자 끼워넣기)
    • 백준 9663 풀이 (백트래킹, 재귀함수)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바