삐까냥의 파도타기

15686번) 치킨배달 본문

코딩/삼성 SW 역량 테스트 기출

15686번) 치킨배달

금손형아 2018. 5. 24. 22:20

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


음..음..


다듬지 않은 코드


import java.util.ArrayList;

import java.util.Scanner;


public class Q15686 {

static int[][] map;

static int mapSize, chickenNum, result = -1;

static boolean[] isVisit;

static ArrayList<Chicken> chickenList = new ArrayList<Chicken>();

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

mapSize = sc.nextInt();

chickenNum = sc.nextInt();

map = new int[mapSize][mapSize];

for (int i = 0; i < mapSize; i++) {

for (int j = 0; j < mapSize; j++) {

int type = sc.nextInt();

if (type == 0) {

continue;

}

map[i][j] = type;

if (type == 2) {

chickenList.add(new Chicken(i, j));

}

}

}

isVisit = new boolean[chickenList.size()];

for (int i = 0; i < chickenList.size(); i++) {

isVisit[i] = true;

searchChicken(i, 1);

isVisit[i] = false;

}

System.out.println(result);

}

static void searchChicken(int nowChickenNum, int count) {

if (count < chickenNum) {

for (int i = nowChickenNum+1; i < chickenList.size(); i++) {

isVisit[i] = true;

searchChicken(i, count+1);

isVisit[i] = false;

}

} else {

int tempResult = 0;

for (int i = 0; i < mapSize; i++) {

for (int j = 0; j < mapSize; j++) {

if (map[i][j] == 1) {

int minDistance = -1;

for (int k = 0; k < chickenList.size(); k++) {

if (isVisit[k]) {

int distance = getDistance(i, j, chickenList.get(k));

if (minDistance == -1 || minDistance > distance) {

minDistance = distance;

}

}

}

tempResult += minDistance;

}

}

}

if (result == -1 || result > tempResult) {

result = tempResult;

}

}

}

static int getDistance(int y1, int x1, Chicken chicken) {

int dy = y1 - chicken.y;

int dx = x1 - chicken.x;

if (dy < 0) {

dy *= -1;

}

if (dx < 0) {

dx *= -1;

}

return dy + dx;

}

}


class Chicken {

int y, x;

public Chicken(int y, int x) {

this.y = y;

this.x = x;

}

}


'코딩 > 삼성 SW 역량 테스트 기출' 카테고리의 다른 글

15685번) 드래곤 커브  (0) 2018.05.23
15684번) 사다리 조작  (0) 2018.05.22
15683번) 감시  (0) 2018.05.19
2117. 홈 방범 서비스  (0) 2018.04.13
삼성 SW 역량 테스트 기출 문제 후기  (0) 2018.04.09