-
[BOJ] 4485 ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? JAVASTUDY ๐/์๊ณ ๋ฆฌ์ฆ 2021. 2. 15. 14:33๋ฐ์ํ
[๋ฌธ์ ]
4485๋ฒ: ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง?
์ ค๋ค์ ์ ์ค ๊ฒ์์์ ํํ์ ๋จ์๋ ๋ฃจํผ(rupee)๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐํน '๋๋๋ฃจํผ'๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ ๋ฃจํผ๋ ์กด์ฌํ๋๋ฐ, ์ด๊ฑธ ํ๋ํ๋ฉด ์คํ๋ ค ์์งํ ๋ฃจํผ๊ฐ ๊ฐ์ํ๊ฒ ๋๋ค! ์ ค๋ค์ ์ ์ค ์๋ฆฌ์ฆ์ ์ฃผ
www.acmicpc.net
์ ค๋ค์ ์ ์ค ๊ฒ์์์ ํํ์ ๋จ์๋ ๋ฃจํผ(rupee)๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐํน '๋๋๋ฃจํผ'๋ผ ๋ถ๋ฆฌ๋ ๊ฒ์ ์ ๋ฃจํผ๋ ์กด์ฌํ๋๋ฐ, ์ด๊ฑธ ํ๋ํ๋ฉด ์คํ๋ ค ์์งํ ๋ฃจํผ๊ฐ ๊ฐ์ํ๊ฒ ๋๋ค!
์ ค๋ค์ ์ ์ค ์๋ฆฌ์ฆ์ ์ฃผ์ธ๊ณต, ๋งํฌ๋ ์ง๊ธ ๋๋๋ฃจํผ๋ง ๊ฐ๋ํ N x N ํฌ๊ธฐ์ ๋๊ตด์ ์ ์ผ ์ผ์ชฝ ์์ ์๋ค. [0][0]๋ฒ ์นธ์ด๊ธฐ๋ ํ๋ค. ์ ์ด๋ฐ ๊ณณ์ ๋ค์ด์๋๊ณ ๋ฌป๋๋ค๋ฉด ๋ฐ์์ ์ฌ๋๋ค์ด ์๊พธ "์ ค๋ค์ ์ ์ค์ ๋์ค๋ ๋ น์ ์ ๊ฐ ์ ค๋ค์ง?"๋ผ๊ณ ๋ฌผ์ด๋ดค๊ธฐ ๋๋ฌธ์ด๋ค. ๋งํฌ๊ฐ ๋ น์ ์ท์ ์ ์ ์ฃผ์ธ๊ณต์ด๊ณ ์ ค๋ค๋ ๊ทธ๋ฅ ์กํ์๋ ๊ณต์ฃผ์ธ๋ฐ, ๊ฒ์ ํ์ดํ์ ์ ค๋ค๊ฐ ๋์์๋ค๊ณ ์๊พธ ์ฌ๋๋ค์ด ์ด๋ ๊ฒ ์ฐฉ๊ฐํ๋๊น ์ ์ ๋ณ์ ๊ฑธ๋ฆด ์๊ธฐ์ ๋์ธ ๊ฒ์ด๋ค.
ํ์ฌํผ ์ ค๋ค...์๋ ๋งํฌ๋ ์ด ๋๊ตด์ ๋ฐ๋ํธ ์ถ๊ตฌ, ์ ์ผ ์ค๋ฅธ์ชฝ ์๋ ์นธ์ธ [N-1][N-1]๊น์ง ์ด๋ํด์ผ ํ๋ค. ๋๊ตด์ ๊ฐ ์นธ๋ง๋ค ๋๋๋ฃจํผ๊ฐ ์๋๋ฐ, ์ด ์นธ์ ์ง๋๋ฉด ํด๋น ๋๋๋ฃจํผ์ ํฌ๊ธฐ๋งํผ ์์ง๊ธ์ ์๊ฒ ๋๋ค. ๋งํฌ๋ ์๋ ๊ธ์ก์ ์ต์๋ก ํ์ฌ ๋๊ตด ๊ฑด๋ํธ๊น์ง ์ด๋ํด์ผ ํ๋ฉฐ, ํ ๋ฒ์ ์ํ์ข์ฐ ์ธ์ ํ ๊ณณ์ผ๋ก 1์นธ์ฉ ์ด๋ํ ์ ์๋ค.
๋งํฌ๊ฐ ์์ ์๋ฐ์ ์๋ ์ต์ ๊ธ์ก์ ์ผ๋ง์ผ๊น?
[์ ๋ ฅ]
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ ๋๊ตด์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ ์ N์ด ์ฃผ์ด์ง๋ค. (2 ≤ N ≤ 125) N = 0์ธ ์ ๋ ฅ์ด ์ฃผ์ด์ง๋ฉด ์ ์ฒด ์ ๋ ฅ์ด ์ข ๋ฃ๋๋ค.
์ด์ด์ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๋๊ตด์ ๊ฐ ์นธ์ ์๋ ๋๋๋ฃจํผ์ ํฌ๊ธฐ๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ๋๋๋ฃจํผ์ ํฌ๊ธฐ๊ฐ k๋ฉด ์ด ์นธ์ ์ง๋๋ฉด k๋ฃจํผ๋ฅผ ์๋๋ค๋ ๋ป์ด๋ค. ์ฌ๊ธฐ์ ์ฃผ์ด์ง๋ ๋ชจ๋ ์ ์๋ 0 ์ด์ 9 ์ดํ์ธ ํ ์๋ฆฌ ์๋ค.
[์ถ๋ ฅ]
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ํ ์ค์ ๊ฑธ์ณ ์ ๋ต์ ํ์์ ๋ง์ถฐ์ ์ถ๋ ฅํ๋ค. ํ์์ ์์ ์ถ๋ ฅ์ ์ฐธ๊ณ ํ์์ค.* ์ถ์ฒ : ICPC > Regionals > North America > Pacific Northwest Regional > 2008 Pacific Northwest Region Programming Contest D๋ฒ
[Solution]package boj4485_๋ น์์ท์ ์์ ๊ฐ์ ค๋ค์ง; /* BFS + ๋ค์ต์คํธ๋ผ * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.PriorityQueue; import java.util.StringTokenizer; class Node implements Comparable<Node>{ int r, c, rupee; public Node(int r, int c, int rupee) { this.r = r; this.c = c; this.rupee = rupee; } @Override public int compareTo(Node o) { return rupee - o.rupee; } } public class Main { static int n; static int[][] map; static boolean[][] visited; static int[][] resRupee; static int[] dx = {0, 0, 1, -1}; static int[] dy = {1, -1, 0, 0}; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; //์์ cnt int probCnt = 0; while(true) { probCnt++; st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); //๋๊ตด ํฌ๊ธฐ n*n //n=0 ์ ๋ ฅ์ ์ข ๋ฃ if(n == 0) return; map = new int[n][n]; //๋๊ตด visited = new boolean[n][n]; //์ขํ ๋ฐฉ๋ฌธ ox resRupee = new int[n][n]; //๋ค์ต์คํธ๋ผ ๊ฒฐ๊ณผ๊ฐ arr for(int i=0; i<n; ++i) { //์ต๋ ๊ฑฐ๋ฆฌ๊ฐ์ผ๋ก ์ด๊ธฐํ Arrays.fill(resRupee[i], n*125); st = new StringTokenizer(br.readLine()); for(int j=0; j<n; ++j) { map[i][j] = Integer.parseInt(st.nextToken()); } } PriorityQueue<Node> q = new PriorityQueue<Node>(); //๋ฃจํผ๊ฐ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ q.add(new Node(0, 0, map[0][0])); //์์์ขํ ๋ ธ๋์ ๋ณด ํ์ ์ฝ์ resRupee[0][0] = map[0][0]; //(0,0)์์ ์๋ ๋ฃจํผ๊ฐ์ ๊ณ ์ while(!q.isEmpty()) { Node node = q.poll(); int r = node.r; int c = node.c; int rupee = node.rupee; if(visited[r][c] == true) continue; //๋ฐฉ๋ฌธํ ๋ ธ๋๋ ์ง๋์นจ visited[r][c] = true; //์ํ์ข์ฐ for(int i=0; i<4; ++i) { int nr = r + dy[i]; int nc = c + dx[i]; //๋ค์์ขํ(nr, nc)๊ฐ ๋๊ตด๋ฐฐ์ด ๋ด? if(nr>=0 && nr<n && nc>=0 && nc<n) { //ํ์ฌ์ขํ์์ ์๋ ๋ฃจํผ + ๋ค์์ขํ์์ ์๋ ๋ฃจํผ -> ๊ฐ์ฅ ์์ ๊ฐ ์ฐพ๊ธฐ if(rupee + map[nr][nc] < resRupee[nr][nc]) { resRupee[nr][nc] = rupee + map[nr][nc]; q.add(new Node(nr, nc, resRupee[nr][nc])); } } } } System.out.println("Problem " + probCnt + ": " + resRupee[n-1][n-1]); } } }
๋ฐ์ํ'STUDY ๐ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ผ์ฑSWํ ์คํธ] ์๊ธฐ ์์ด JAVA (0) 2021.02.17 [2020 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฝ๋ฉํ ์คํธ] ๊ฐ์ฌ ๊ฒ์ JAVA (0) 2021.02.17 [BOJ] 15649~15652 N๊ณผ M JAVA (0) 2021.02.15 [BOJ] 2887 ํ์ฑ ํฐ๋ JAVA (0) 2021.02.09 [BOJ] 18352 ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ_JAVA (0) 2021.02.09