삐까냥의 파도타기

2117. 홈 방범 서비스 본문

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

2117. 홈 방범 서비스

금손형아 2018. 4. 13. 17:46

2117. 홈 방범 서비스


문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V61LqAf8DFAWu


43프로 정답률이네요.


근데 저는 왜케 어려웠죠???????


마름모를 한번도 안해봐서, 마름모 코딩이 어려웠어요.




2018년 4월 13일 - 다듬지 않은 코드 (소요시간 : 59분)


import java.util.Scanner;


public class Q2117 {


static int mapSize, cost, count, max;

static int[][] map;

static int[] minCost = new int[21];

public static void main(String[] args) {

//범위에 따른 값 계산

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

minCost[i] = ((i+1)*(i+1)) + (i*i);

}

Scanner sc = new Scanner(System.in);

int testCase = sc.nextInt();

for (int i = 1; i <= testCase; i++) {

mapSize = sc.nextInt();

cost = sc.nextInt();

map = new int[mapSize][mapSize];

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

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

map[j][k] = sc.nextInt();

}

}

count = 0;

max = 0;

solution();

System.out.println("#" + i + " " + max);

}

}

static void solution() {

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

//손해를 안보기 위해서 필요한 최소한의 집 개수.

int minHome = minCost[i] / cost;

if (minCost[i] % cost > 0) {

minHome += 1;

}

//처음부터 끝까지 좌표에서 계산하기

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

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

int isHomeNum = 0;

//현재 좌표에서 포함된 집의 개수 구하기

for (int j = i; j >= -i; j--){

int value = i-j;

if (j < 0) {

value = (i)+j;

}

for (int k = -value; k <= value; k++) {

int tempY = nowY+j;

int tempX = nowX+k;

if (0 <= tempY && tempY < mapSize && 0 <= tempX && tempX < mapSize && map[tempY][tempX] == 1) {

isHomeNum += 1;

}

}

}

if (minHome <= isHomeNum) {

if (max < isHomeNum) {

max = isHomeNum;

}

}

}

}

}

}

}


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

15684번) 사다리 조작  (0) 2018.05.22
15683번) 감시  (0) 2018.05.19
삼성 SW 역량 테스트 기출 문제 후기  (0) 2018.04.09
14502번) 연구소  (0) 2018.04.09
13460번) 구슬탈출2  (0) 2018.04.09