삐까냥의 파도타기
2117. 홈 방범 서비스 본문
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 |