[BaekJoon] 14620 ๊ฝƒ๊ธธ (Java)

SeongWon Ohยท2021๋…„ 10์›” 24์ผ
0
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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


๐Ÿ“ ๋ฌธ์ œํ’€์ด ๋ฐฉ๋ฒ•

๋ฌธ์ œ๋ฅผ ํ’€์ดํ• ๋•Œ ์ฒ˜์Œ์—๋Š” ๊ฐ๊ฐ ์œ„์น˜์˜ cost๋ฅผ ๊ตฌํ•˜๊ณ  cost๊ฐ€ ์ž‘์€ ์œ„์น˜๋ถ€ํ„ฐ ๊ฒน์น˜์ง€ ์•Š๋Š” ์„ ์—์„œ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์‹์œผ๋กœ ํ’€์ด๋ฅผ ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํ’€์ด๋ฒ•์€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ฐ€์žฅ cost๊ฐ€ ์ ์€ ์œ„์น˜๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ตœ์†Ÿ๊ฐ’์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ธฐ์— ์ž˜๋ชป๋œ ํ’€์ด๋ฒ•์ด์—ˆ๋‹ค.

๋‘๋ฒˆ์งธ ํ’€์ด๋ฒ•์€ 3๊ฐœ์˜ ๊ฝƒ์˜ ์œ„์น˜์— ๋Œ€ํ•˜์—ฌ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด๋ฅผ ํ•˜์˜€๋‹ค. ๊ฐ๊ฐ ํƒ์ƒ‰์„ ํ•˜๋ฉฐ ๊ฝƒ์ด ์œ„์น˜ํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜์ด๊ฑฐ๋‚˜ ๊ฝƒ์˜ ์œ„์น˜๊ฐ€ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๋Š” ๋†’์€ ์ˆ˜๋ฅผ returnํ•˜๋ฉฐ ์ •์ƒ์ ์ธ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น cost๋ฅผ returnํ›„ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ์‹์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•˜์˜€๋”๋‹ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ”ฅ๐Ÿ”ฅ ์ƒˆ๋กœ ์•Œ์•„๊ฐ„ ๊ฒƒ ๐Ÿ”ฅ๐Ÿ”ฅ
2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ๋Š” 2์ค‘ loop๊ฐ€ ์•„๋‹Œ ์•„๋ž˜์™€ ๊ฐ™์ด N*N์˜ ํƒ์ƒ‰ ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„ ์ „์ฒด ํƒ์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค!!

for (int i=0; i<(N*N); i++) {
    x = i/N;
    y= i%N;
}

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ์ž‘์„ฑํ•œ ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;

public class Main {
	
	static int[][]matrix;
	static int N;
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		matrix = new int[N][N];
		int answer = Integer.MAX_VALUE;
		
		for (int i=0; i<N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int j=0; j<N; j++) {
				matrix[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		// 3๊ฐœ์˜ ๊ฝƒ ํƒ์ƒ‰
		for (int i=0; i<(N*N); i++) {
			for (int j=0; j<(N*N); j++) {
				for (int k=0; k<(N*N); k++) {
					ArrayList<Integer> list = new ArrayList<>();
					list.add(i);
					list.add(j);
					list.add(k);
					answer = Math.min(answer, findCost(list));
				}	
			}
		}
		
		System.out.println(answer);
	}
	static int findCost(ArrayList<Integer> list) {
		int[] dx = {0, -1, 1, 0, 0};
		int[] dy = {0, 0, 0, -1, 1};	
		boolean[][] check = new boolean[N][N];
		
		int result = 0;
		for (int i: list) {
			int x = i / N;
			int y = i % N;
			
			// ๊ฐ€์žฅ ์ž๋ฆฌ์— ์œ„์น˜ํ•˜๋ฉด ํƒˆ๋ฝ
			if (x==0 || x==(N-1) || y==0 || y==(N-1)) {
				return 10000;
			}
			
			for (int j=0; j<5; j++) {
				if (!check[x+dx[j]][y+dy[j]]) {
					check[x+dx[j]][y+dy[j]] = true;
					result += matrix[x+dx[j]][y+dy[j]];
				}
				else return 10000;				
			}
		}
		return result;
	}
}

profile
๋ธ”๋กœ๊ทธ ์ด์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. -> https://seongwon.dev/

0๊ฐœ์˜ ๋Œ“๊ธ€