[programmers] ๋„คํŠธ์›Œํฌ - Java

์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜์™€ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ฒ˜์Œ์—๋Š” ๋‘ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋  ๋•Œ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, ์ด๋Š” ๊ฐ„์ ‘ ์—ฐ๊ฒฐ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„ ์ •ํ™•ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๋ฅผ ์ ์šฉํ•˜์—ฌ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ปดํ“จํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ DFS๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๋ฐฉ๋ฌธํ•œ ์ปดํ“จํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, ํ•ด๋‹น ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.
DriedPollack's avatar
Apr 08, 2024
[programmers] ๋„คํŠธ์›Œํฌ - Java

๋„คํŠธ์›Œํฌ

๋ฌธ์ œ ์„ค๋ช…

๋„คํŠธ์›Œํฌ๋ž€ ์ปดํ“จํ„ฐ ์ƒํ˜ธ ๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ B๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ์ปดํ“จํ„ฐ B์™€ ์ปดํ“จํ„ฐ C๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ๋•Œ ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ C๋„ ๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํ“จํ„ฐ A, B, C๋Š” ๋ชจ๋‘ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์ƒ์— ์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜ n, ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด computers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ œํ•œ์‚ฌํ•ญ

  • ์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜ n์€ 1 ์ด์ƒ 200 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์ปดํ“จํ„ฐ๋Š” 0๋ถ€ํ„ฐ n-1์ธ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • i๋ฒˆ ์ปดํ“จํ„ฐ์™€ j๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด computers[i][j]๋ฅผ 1๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • computer[i][i]๋Š” ํ•ญ์ƒ 1์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n
computers
return
3
[[1, 1, 0], [1, 1, 0], [0, 0, 1]]
2
3
[[1, 1, 0], [1, 1, 1], [0, 1, 1]]
1

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์˜ˆ์ œ #1
์•„๋ž˜์™€ ๊ฐ™์ด 2๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
notion image
์˜ˆ์ œ #2
์•„๋ž˜์™€ ๊ฐ™์ด 1๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
notion image

์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution { public int solution(int n, int[][] computers) { int answer = n; for(int i=0; i<computers.length-1; i++){ for(int j=i+1; j<computers[i].length; j++){ if(computers[i][j]==1) answer--; if(answer==1) return answer; } } return answer; } }

์ˆ˜์ •ํ•œ ์ฝ”๋“œ

class Solution { public int solution(int n, int[][] computers) { boolean[] visited = new boolean[n]; int networks = 0; for (int i = 0; i < n; i++) { System.out.println(visited[i]); if (!visited[i]) { dfs(computers, visited, i); networks++; } } return networks; } private void dfs(int[][] computers, boolean[] visited, int node) { visited[node] = true; for (int neighbor = 0; neighbor < computers.length; neighbor++) { if (computers[node][neighbor] == 1 && !visited[neighbor]) { dfs(computers, visited, neighbor); } } } }
 

ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ

  • ์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‘ ์ปดํ“จํ„ฐ ๊ฐ„์— ์—ฐ๊ฒฐ์ด ๋ฐœ๊ฒฌ๋  ๋•Œ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œ์ผœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ๊ฐ„์ ‘ ์—ฐ๊ฒฐ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์—ฐ๊ฒฐ ์ˆ˜๋งŒ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ์ˆ˜๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DFS๋ฅผ ์ ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.
    • DFS ์ˆœํšŒ ์ค‘์— ๋ฐฉ๋ฌธํ•œ ์ปดํ“จํ„ฐ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  boolean ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์„œ, ๋งŒ์•ฝ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด dfs()๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
      • dfs() ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐฉ๋ฌธํ•œ ์ปดํ“จํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ํ•ด๋‹น ์ปดํ“จํ„ฐ์™€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ์ˆœํšŒํ•œ๋‹ค.
      • ํ•ด๋‹น ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๋ฅผ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ dfs() ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ๋‹ค.
    • ํ•ด๋‹น ์ปดํ“จํ„ฐ์˜ ๋ฐฉ๋ฌธ์ด ์™„๋ฃŒ๋˜๋ฉด ๋„คํŠธ์›Œํฌ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
 

๊ฒฐ๋ก !

ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ DFS๋กœ ๋ฌธ์ œ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ข€ ๋” ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
 
Share article

More articles

See more posts

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 7์žฅ ์ •๋ฆฌ

DriedPollack's avatar
April 8, 2024
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 7์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 8์žฅ ์ •๋ฆฌ

DriedPollack's avatar
April 8, 2024
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 8์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 6์žฅ ์ •๋ฆฌ

DriedPollack's avatar
April 5, 2024
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 6์žฅ ์ •๋ฆฌ

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปDriedPollack's Blog