[BOJ15686] 치킨 배달

Updated:

치킨 거리가 가장 작은 값

  • 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리
  • 거리는 맨해튼 거리(https://en.wikipedia.org/wiki/Taxicab_geometry) 사용
  • 0 빈 칸, 1 집, 2 치킨집
  • 가장 수익을 많이 낼 수 있는 치킨집 M개 뽑기(치킨 거리 최소)

입력

  • N(2<= <=50), M(1<= <=13)
  • 도시 정보 2차원 배열

출력

  • M개의 치킨집을 골랐을 때, 치킨 거리의 최소 값

설계

  • 집, 치킨 집을 배열에 따로 저장
  • 치킨 집 중 M개 뽑기
  • 집을 기준으로 M개 뽑은 치킨집과의 최소 거리 구하기
  • 각 집의 최소 거리 다 더하면 치킨 거리
  • M개의 경우의 수의 치킨 거리 모두 구해서 최소 값 출력

피드백

  • 치킨 집을 M개 뽑을 때, 백트래킹을 이용한 순열을 구현했더니 시간초과 발생
  • 백트래킹을 이용한 조합으로 수정
  • 순열과 달리 조합을 이용할 때는, dfs 재귀함수 매개변수로 반복문의 index 값을 추가하여, 이전에 사용한 값은 다시 방문하지 않는 방식으로 접근

How I solved(click to github)


ref :
BOJ15686

Leave a comment