이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[골드 5] 백준 15686 - 치킨 배달 (파이썬)

  • 2025.04.15 15:10
  • Programming/백준
글 작성자: pental

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

풀이

도시에는 집(1)과 치킨집(2)가 있고, 나머지는 (0)으로 빈칸이다.

최대 M개의 치킨집만 선택해서 영업해야하며, 모든 집은 가장 가까운 치킨집까지의 거리로 만족한다.

모든 지들의 치킨 거리의 합이 최소가 되도록 M개의 치킨집을 선택해야한다.

N, M = map(int, input().split())
C = [list(map(int, input().split())) for _ in range(N)]

N, M, C는 도시의 크기, 영업할 치킨집 수, 도시 지도 정보를 나타낸다.

house = []
chicken = []

for i in range(N):
    for j in range(N):
        if C[i][j] == 1:
            house.append((i, j))
        if C[i][j] == 2:
            chicken.append((i, j))

집과 치킨집의 위치를 각각 리스트에 저장한다.

min_total = 1e9

최소 도시 치킨 거리를 초기화 한다. (엄청 큰수로 선언)

total = 0
for r1, c1 in house:
    min_dist = 1e9
    for r2, c2 in combination:
        min_dist = min(min_dist, abs(r1 - r2) + abs(c1 - c2))
    total += min_dist

현재 선택된 M개의 치킨집 조합에 대해, 각 집이 가장 가까운 치킨집과의 거리(min_dist)를 구하고, 모든 집의 최소 거리의 합을 total로 저장한다.

min_total = min(min_total, total)

지금 조합의 도시 치킨 거리와 이전까지의 최소값을 비교하여 최소값을 갱신합니다.

시간 복잡도 분석

치킨집 수가 최대 13이므로, 가능한 조합 수는 C → 브루트 포스 가능

조합마다 모든 집을 순회하며 거리를 계산한다.

코드

# 백준 15686 - 치킨 배달
# 분류 : 브루트 포스

from itertools import combinations

N, M = map(int, input().split())
C = [list(map(int, input().split())) for _ in range(N)]

house = []
chicken = []

for i in range(N) :
    for j in range(N) :
        if C[i][j] == 1 :
            house.append((i, j))
        if C[i][j] == 2 :
            chicken.append((i, j))

min_total = 1e9
for combination in combinations(chicken, M) :
    total = 0
    for r1, c1 in house :
        min_dist = 1e9
        for r2, c2 in combination :
            min_dist = min(min_dist, abs(r1 - r2) + abs(c1 - c2))
        total += min_dist
    min_total = min(min_total, total)

print(min_total)
저작자표시 비영리 (새창열림)

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

[실버 3] 백준 1904 - 01타일 (파이썬)  (0) 2025.04.16
[골드 5] 백준 1038 - 감소하는 수 (파이썬)  (0) 2025.04.16
[실버 5] 백준 23253 - 자료구조는 정말 최고야 (파이썬)  (0) 2025.04.15
[골드 4] 백준 17298 - 오큰수 (파이썬)  (0) 2025.04.15
[실버 5] 백준 7785 - 회사에 있는 사람 (파이썬)  (0) 2025.04.14

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [실버 3] 백준 1904 - 01타일 (파이썬)

    [실버 3] 백준 1904 - 01타일 (파이썬)

    2025.04.16
  • [골드 5] 백준 1038 - 감소하는 수 (파이썬)

    [골드 5] 백준 1038 - 감소하는 수 (파이썬)

    2025.04.16
  • [실버 5] 백준 23253 - 자료구조는 정말 최고야 (파이썬)

    [실버 5] 백준 23253 - 자료구조는 정말 최고야 (파이썬)

    2025.04.15
  • [골드 4] 백준 17298 - 오큰수 (파이썬)

    [골드 4] 백준 17298 - 오큰수 (파이썬)

    2025.04.15
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (441) N
    • Forensics (104)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (23)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (250) N
      • C (10)
      • Python (11)
      • 백준 (196) N
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 파이썬
  • 프로그래머스
  • 포렌식
  • pental
  • axiom
  • 백준
  • 디지털포렌식
  • Forensics
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바