-
[2021 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ์ฝ๋ฉํ ์คํธ] ํฉ์น ํ์ ์๊ธ JAVASTUDY ๐/์๊ณ ๋ฆฌ์ฆ 2021. 2. 4. 10:07๋ฐ์ํ
[๋ฌธ์ ]
https://programmers.co.kr/learn/courses/30/lessons/72413์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํฉ์น ํ์ ์๊ธ
6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4
programmers.co.kr
์ง์ ์ ๊ฐ์ n, ์ถ๋ฐ์ง์ ์ ๋ํ๋ด๋ s, A์ ๋์ฐฉ์ง์ ์ ๋ํ๋ด๋ a, B์ ๋์ฐฉ์ง์ ์ ๋ํ๋ด๋ b, ์ง์ ์ฌ์ด์ ์์ ํ์์๊ธ์ ๋ํ๋ด๋ fares๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋, A, B ๋ ์ฌ๋์ด s์์ ์ถ๋ฐํด์ ๊ฐ๊ฐ์ ๋์ฐฉ ์ง์ ๊น์ง ํ์๋ฅผ ํ๊ณ ๊ฐ๋ค๊ณ ๊ฐ์ ํ ๋, ์ต์ ์์ ํ์์๊ธ์ ๊ณ์ฐํด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋ง์ฝ, ์์ ํฉ์น์ ํ์ง ์๊ณ ๊ฐ์ ์ด๋ํ๋ ๊ฒฝ์ฐ์ ์์ ํ์์๊ธ์ด ๋ ๋ฎ๋ค๋ฉด, ํฉ์น์ ํ์ง ์์๋ ๋ฉ๋๋ค.
[์ ํ์ฌํญ]
โช๏ธ์ง์ ๊ฐฏ์ n์ 3 ์ด์ 200 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
โช๏ธ์ง์ s, a, b๋ 1 ์ด์ n ์ดํ์ธ ์์ฐ์์ด๋ฉฐ, ๊ฐ๊ธฐ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋๋ค.
- ์ฆ, ์ถ๋ฐ์ง์ , A์ ๋์ฐฉ์ง์ , B์ ๋์ฐฉ์ง์ ์ ์๋ก ๊ฒน์น์ง ์์ต๋๋ค.
โช๏ธ fares๋ 2์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋๋ค.
โช๏ธ fares ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 2 ์ด์ n x (n-1) / 2 ์ดํ์ ๋๋ค.
- ์๋ฅผ๋ค์ด, n = 6์ด๋ผ๋ฉด fares ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 2 ์ด์ 15 ์ดํ์ ๋๋ค. (6 x 5 / 2 = 15)
- fares ๋ฐฐ์ด์ ๊ฐ ํ์ [c, d, f] ํํ์ ๋๋ค.
- c์ง์ ๊ณผ d์ง์ ์ฌ์ด์ ์์ ํ์์๊ธ์ด f์์ด๋ผ๋ ๋ป์ ๋๋ค.
- ์ง์ c, d๋ 1 ์ด์ n ์ดํ์ธ ์์ฐ์์ด๋ฉฐ, ๊ฐ๊ธฐ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๋๋ค.
- ์๊ธ f๋ 1 ์ด์ 100,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- fares ๋ฐฐ์ด์ ๋ ์ง์ ๊ฐ ์์ ํ์์๊ธ์ 1๊ฐ๋ง ์ฃผ์ด์ง๋๋ค. ์ฆ, [c, d, f]๊ฐ ์๋ค๋ฉด [d, c, f]๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
โช๏ธ์ถ๋ฐ์ง์ s์์ ๋์ฐฉ์ง์ a์ b๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
[Solution]
- ์ต๋จ๊ฒฝ๋ก ๋ฌธ์
- ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ ์ ์ฉ
adj[a][b] = min(adj[a][b], adj[a][k]+adj[k][b])
- f๋ 1์ด์ 100,000์ดํ, ์ง์ ๊ฐฏ์๋ 3์ด์ 200์ดํ ์กฐ๊ฑด์ ๋ฐ๋ผ 20,000,000์ผ๋ก ์ด๊ธฐํpackage programmers_ํฉ์นํ์์๊ธ; import java.util.Arrays; public class Main { static int[][] d; public static void main(String[] args) { int n = 6; int s = 4; int a = 6; int b = 2; int[][] fares = {{4, 1, 10}, {3, 5, 24}, {5, 6, 2}, {3, 1, 41}, {5, 1, 24}, {4, 6, 50}, {2, 4, 66}, {2, 3, 22}, {1, 6, 25}}; System.out.print(solution(n, s, a, b, fares)); } static int solution(int n, int s, int a, int b, int[][] fares) { int answer = 20000000; //100000*200 d = new int[n][n]; for(int t[]:d) { Arrays.fill(t, 20000000); } for(int i=0; i<fares.length; ++i) { int start = fares[i][0]-1; int end = fares[i][1]-1; //์๋ฐฉํฅ ์๊ธ ๋๊ฐ์ d[start][end] = fares[i][2]; d[end][start] = fares[i][2]; } //i์์ j๊น์ง์ ์ต์๊ฑฐ๋ฆฌ d[][] for(int k=0; k<n; ++k) { for(int i=0; i<n; ++i) { for(int j=0; j<n; ++j) { if(i==j) { d[i][j] = 0; } else { d[i][j] = Math.min(d[i][j], d[i][k]+d[k][j]); } } } } for(int i=0; i<n; ++i) { answer = Math.min(answer, d[s-1][i] + d[i][a-1] + d[i][b-1]); } return answer; } }
๋ฐ์ํ'STUDY ๐ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 2887 ํ์ฑ ํฐ๋ JAVA (0) 2021.02.09 [BOJ] 18352 ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ_JAVA (0) 2021.02.09 [SWEA] 2115 ๋ฒ๊ฟ์ฑ์ทจ_JAVA (0) 2021.02.03 [BOJ] 14501 ํด์ฌ_JAVA (0) 2021.02.03 [BOJ] 2110 ๊ณต์ ๊ธฐ ์ค์น_JAVA (0) 2021.02.03