ALGORITHM

DFS java

2022. 6. 17. 11:10
728x90
λ°˜μ‘ν˜•

πŸ•κΉŠμ΄ μš°μ„  탐색 : 

 

미둜λ₯Ό νƒμƒ‰ν•  λ•Œ ν•œ λ°©ν–₯으둜 κ°ˆ μˆ˜ μžˆμ„ λ•ŒκΉŒμ§€ κ³„속 κ°€λ‹€κ°€ λ” μ΄μƒ κ°ˆ μˆ˜ μ—†κ²Œ λ˜λ©΄ λ‹€μ‹œ κ°€μž₯ κ°€κΉŒμš΄ κ°ˆλ¦ΌκΈΈλ‘œ λŒμ•„μ™€μ„œ μ΄κ³³μœΌλ‘œλΆ€ν„° λ‹€λ₯Έ λ°©ν–₯으둜 λ‹€μ‹œ νƒμƒ‰μ„ μ§„ν–‰ν•˜λŠ” λ°©λ²•κ³Ό μœ μ‚¬ν•˜λ‹€.
즉, λ„“κ²Œ(wide) νƒμƒ‰ν•˜κΈ° μ „에 κΉŠκ²Œ(deep) νƒμƒ‰ν•˜λŠ” κ²ƒμ΄λ‹€.

 

 


https://gmlwjd9405.github.io/2018/08/14/algorithm-dfs.html

 

[μ•Œκ³ λ¦¬μ¦˜] 깊이 μš°μ„  탐색(DFS)μ΄λž€ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

깊이 μš°μ„  νƒμƒ‰(DFS)이 λ„ˆλΉ„ μš°μ„  νƒμƒ‰(BFS)보닀 μ’€ λ” κ°„λ‹¨ν•˜λ‹€.
λ‹¨μˆœ 검색 속도 μžμ²΄λŠ” λ„ˆλΉ„ μš°μ„  탐색(BFS)에 λΉ„ν•΄μ„œ λŠλ¦¬λ‹€. 

 

μ΅œλ‹¨κ²½λ‘œλ₯Ό 찾자면 BFSλ₯Ό μ΄μš©ν•΄μ•Ό ν•œλ‹€. 

    DFSλŠ” μ΅œλ‹¨ κ²½λ‘œκ°€ λœλ‹€λŠ” 보μž₯도 없을 λΏλ”λŸ¬ κ²½λ‘œκ°€ λ‹€μˆ˜λΌλ©΄, 해에 λ‹€λ‹€λ₯΄λ©΄ 탐색이 μ’…λ£Œλ˜λ―€λ‘œ 졜적 ν•΄κ°€ 아닐 μˆ˜λ„ μžˆλ‹€. 

 

 

   BFS와 λ§ˆμ°¬κ°€μ§€λ‘œ λ―Έλ‘œνƒμƒ‰μ— 해당함. 

 

νƒ€κ²Ÿμ€ B

B κΉŒμ§€ κ°€λ € ν•œλ‹€.

 

 

돌린 둜직의 쀑간 경둜λ₯Ό 확인 ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. 

 

λ°©λ¬Έν•œ 경둜λ₯Ό ν‘œμ‹œν–ˆλ‹€.

 

 

κ΅¬ν˜„ : DFS + μž¬κ·€ : 

 

static int dx2[] = {1, -1, 0, 0};
static int dy2[] = {0, 0, 1, -1};
static String arr2[][];
   
   static void dfsRecursion(String[][] arr, boolean[][] visited, int x, int y) {
    
    // μ’…λ£Œμ‘°κ±΄μ΄ μ—†λ‹€λ©΄ λ¬΄ν•œλ£¨ν”„μ— 빠질 μˆ˜λ„ μžˆλ‹€.
    // μ ν•©ν•œ μ’…λ£Œμ‘°κ±΄μ„ λͺ…μ‹œν•΄μ€Œμ΄ μ’‹λ‹€. κ°€λ Ή λ―Έλ‘œμ— λŒ€ν•œ 해닡이 없을 μˆ˜λ„ μžˆμœΌλ‹ˆκΉŒ.
    
            // μ°Ύμ•„κ°€λŠ” 경둜 ν™•μΈμš©.
     /* for (int i = 0 ; i < lineNums2; i ++ ) {
            for (int j = 0 ; j < charNums2; j ++ ) {
                if (visited[j][i]) {
                    arr2[j][i] = "*";
                }
                System.out.print(arr2[j][i]);
            }
            System.out.println("");
        }
     */
     
     	// λͺ©μ μ§€λŠ” Bκ°€ 되기 λ•Œλ¬Έμ—.
         if (arr[x][y].equals("B")) {
            System.out.println("B found...");
           
            cnt2++;
            return;
        }
     
     // λ°©λ¬Έν•œ κ²½λ‘œμ— λŒ€ν•œ ν‘œμ‹œλ₯Ό ν•œλ‹€. 
     visited[x][y] = true;
     
         for (int i=0;i<4;i++) {

            int nx = x + dx2[i];
            int ny = y + dy2[i];

            if (nx >=0 && ny >=0 && nx < charNums2 && ny < lineNums2) {
                if ((!visited[nx][ny] && arr[nx][ny].equals(" ") ) || arr[nx][ny].equals("B")) {
                    dfsRecursion(arr,visited,nx,ny);
                    visited[nx][ny] = false;  
                }
            }
        }

 

 

320x100
λ°˜μ‘ν˜•
μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'ALGORITHM' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[LIS] λ°±μ€€ 2631 쀄 μ„Έμš°κΈ°  (0) 2022.08.28
[LIS] λ°±μ€€ 11053 κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄  (0) 2022.08.28
JAVA λ―Έλ‘œνƒμƒ‰ / BFS  (0) 2022.06.14
λ°±μ€€ 2837 / java  (0) 2022.04.05
SHA-256 (Secure Hash Algorithm)  (0) 2022.04.04
'ALGORITHM' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [LIS] λ°±μ€€ 2631 쀄 μ„Έμš°κΈ°
  • [LIS] λ°±μ€€ 11053 κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄
  • JAVA λ―Έλ‘œνƒμƒ‰ / BFS
  • λ°±μ€€ 2837 / java
girin_dev
girin_dev
κΈ°λ‘ν•©μ‹œλ‹€.
250x250
girin_dev
girin_dev
girin_dev

github.com/jaemanc


전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (122)
    • ALGORITHM (23)
    • AWS (4)
    • Effective Java (4)
    • ERROR (12)
    • DB (11)
    • JAVA (23)
      • SPRING (10)
    • PYTHON (5)
      • TOY_PROJECT (1)
    • MOBILE (4)
    • SERVER (8)
    • TIPS (16)
    • WAS (2)
    • μƒˆμ‹Ή 일기 (5)
    • DATA (2)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

νƒœκ·Έ

  • μƒˆμ‹Ή
  • java
  • jwt
  • λ°”μ§ˆ
  • spring boot
  • oracle cloud
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • JAVA 11
  • Flutter
  • vertica
  • Effective Java
  • centos7
  • offset
  • springboot
  • IntelliJ
  • error
  • lis
  • λ°”μ§ˆ ν‚€μš°κΈ°
  • CentOS 8
  • 바둑이
  • oracle
  • λ°”μ§ˆ νŽ˜μŠ€ν† 
  • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°
  • κ°€μž₯ 큰 수
  • react-native
  • docker
  • python3
  • querydsl
  • dp
  • Chat GPT

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.
girin_dev
DFS java
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.