백준 15686 (BOJ 15686) 치킨배달 - JAVA

삼성 SW 테스트 기출문제 - 백준 15686 치킨배달을 풀었다.

 

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

 

15686번: 치킨 배달

크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는

www.acmicpc.net

소요 시간 40분
풀이 : 치킨 집과 집을 각각 ArrayList에 때려박음.
조합으로 폐쇄하지 않을 M개를 뽑음.

 

	public static void choice(int arr[], int n, int r, int idx, int target){
		if(r==0){
			ArrayList<Point> tmp = new ArrayList<Point>();
			for(int i=0;i<arr.length;i++){
				tmp.add(chik.get(arr[i]));
			}
			countLen(tmp);
		}
		else if(target==n){
			return ;
		} else {
			arr[idx] = target;
			choice(arr, n, r-1, idx+1, target+1);
			choice(arr, n, r, idx, target+1);
		}
	}

 

뽑은 뒤, 각 집에 대해서 치킨집 최소거리를 구함. 

모든 조합에 대해서 최소거리를 구해서 원하는 답을 찾는다.

 

JAVA 코드는 다음과 같다.

 

 

 

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

백준 15685 드래곤 커브 JAVA  (0) 2020.03.05
백준 14501 퇴사 - JAVA  (0) 2020.03.04
백준 14502 연구소 - JAVA  (0) 2020.03.02
[백준 13458 - JAVA] 시험감독  (0) 2020.03.01
[JAVA 백준 16236] - 아기상어  (0) 2020.02.27