백준 15868 치킨배달 파이썬, 삼성 SW 기출문제

2021. 10. 26. 13:24·Algorithm (PS)
728x90

문제 링크 : https://www.acmicpc.net/problem/15686

 

15686번: 치킨 배달

크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸

www.acmicpc.net

 

도시에 있는 치킨집 중에서 최대 M 개를 골랐을 때, 도시의 치킨 거리를 구하는 문제이다. 

치킨집들 중에서 M 개를 고르는 경우를 구할때 파이썬의 조합 라이브러리를 이용하면 이 문제는 생각보다 쉽게 풀 수 있다 (!)

itertools의 combination을 사용한다 

풀이 과정은 다음과 같다 

1. data 입력을 받는다 

2. for 문으로 data 입력 받을 때 치킨집의 위치 x, y 를 저장한다

3. for 문으로 data 입력 받을 때 집의 위치 x,y 를 저장한다 ->  나중에 다시 일일이 집이랑 치킨집 위치 for문 이중으로 돌면서 확인하는 것보다 비용이 절감된다 ! 

4. combination으로 치킨집들 중에서 m개를 고르는 경우의 수 list를 생성한다 

5. 조합 리스트를 하나씩 순회하면서 최소가 되는 치킨 거리 abs(치킨집의 위치 x좌표 -집의 위치 x좌표) + abs(치킨집의 위치 y좌표 - 집의 위치 y좌표)를 구한다 

6. 최소 치킨거리값을 출력한다 

 

코드로 옮겨보자 

from itertools import combinations

n, m = map(int, input().split())
chicken = []
home = []

for r in range(n): # row 의 길이 n 
    data = list(map(int, input().split()))
    for c in range(n): # column의 길이도 n 
        if data[c] == 2: 
            chicken.append((r, c))
        elif data[c] == 1:
            home.append((r, c))

candidates = combinations(chicken, m)

def solve(candidate):
    result = 0 # 치킨 거리 최종
    for hx, hy in home:
        temp = 1e9
        for cx, cy in candidate:
            temp = min(temp, abs(hx - cx) + abs(hy - cy)) # 한 집에서 가장 가까운 치킨집과의 거리를 구함
        result += temp
    return result

result = 1e9

for candidate in candidates:
    result = min(result, solve(candidate))
print(result)
728x90

'Algorithm (PS)' 카테고리의 다른 글

[백준/파이썬/삼성] 14502 파이썬 풀이  (0) 2021.10.31
[프로그래머스/카카오] 외벽점검  (0) 2021.10.31
백준 1697 숨바꼭질 파이썬 풀이  (0) 2021.09.07
백준 1074 파이썬 - Z  (2) 2021.09.07
백준 알고리즘 2108 통계학 (python)  (0) 2021.07.29
'Algorithm (PS)' 카테고리의 다른 글
  • [백준/파이썬/삼성] 14502 파이썬 풀이
  • [프로그래머스/카카오] 외벽점검
  • 백준 1697 숨바꼭질 파이썬 풀이
  • 백준 1074 파이썬 - Z
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • dp
  • EC2
  • 데이터엔지니어
  • Databricks
  • 클라우드
  • 프로그래머스
  • Swift
  • 쿠버네티스
  • 데이터엔지니어링
  • Kubernetes
  • 백트래킹
  • dfs
  • linux
  • BFS
  • 카카오코딩테스트
  • AWS
  • python
  • 스파크
  • 알고리즘
  • 운영체제
  • 파이썬
  • 빅데이터
  • 코딩테스트
  • 데이터브릭스
  • Leetcode
  • 리눅스
  • ansible
  • docker
  • 백준
  • SPARK

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
백준 15868 치킨배달 파이썬, 삼성 SW 기출문제
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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