가이버2
개발 블로그
가이버2
전체 방문자
오늘
어제
  • 분류 전체보기 (171)
    • 교육 (115)
      • 백엔드 (14)
      • 프론트 (2)
      • 네트워크 관련 (4)
      • 데이터 관련 (3)
      • devops (3)
      • 그외 (3)
      • 알고리즘 (5)
      • 코테 (81)
    • 디버깅 (3)
      • 스프링 Data JPA (3)
      • JAVA (0)
    • 개발 편의 (8)
    • 기계 (24)
      • NAS (9)
      • ROUTER (0)
      • 맥북 (15)
    • 소프트웨어 (17)
      • WIN (4)
      • MAC (13)
      • LINUX (0)
    • 생활 (0)
      • 구매 (0)
      • 오월이 (0)
    • 링크 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • naelonambul 개발 블로그 입니다.

인기 글

태그

  • intellij
  • Spring
  • M1
  • 인프런
  • ARM
  • SSD
  • 스프링
  • JS
  • 맥북
  • 시놀로지
  • M4
  • 맥미니
  • 윈도우
  • Java
  • SQL
  • 코딩테스트
  • 가상화
  • 맥
  • WSL
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
가이버2

개발 블로그

교육/알고리즘

[JAVA] DFS

2022. 8. 3. 16:13
package algo.DFS;

import java.util.*;
import java.util.stream.IntStream;

public class DFS {
    public static void main(String[] args) {
        // [503], [503]
        int board[][] = {
            {1,1,1,0,1,0,0,0,0,0},
            {1,0,0,0,1,0,0,0,0,0},
            {1,1,1,0,1,0,0,0,0,0},
            {1,1,0,0,1,0,0,0,0,0},
            {0,1,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0,0}
        }; //1파란칸, 0빨간칸
        int vis[][] = new int[503][503]; //해당칸 방문
        IntStream.range(0, 503)
        .forEach(i -> {
            Arrays.fill(vis[i], 0);
        });
        int n=7; int m=10; //n=행, m=열
        int dx[] = {1, 0, -1, 0};
        int dy[] = {0, 1, 0, -1}; //상하좌우

        Stack<Pair> pS = new Stack<Pair>();
        vis[0][0] = 1;
        pS.push(new Pair(0, 0));
        
        while(!pS.empty()){
            Pair cur = pS.peek(); pS.pop();
            System.out.println("("+cur.getX()+", "+cur.getY()+") -> ");
            //방향 체크
            for(int dir = 0; dir < 4; dir++){
                int nx = cur.getX() + dx[dir];
                int ny = cur.getY() + dy[dir];
                if( nx < 0 || nx >= n || ny < 0 || ny >= m) continue;
                if(vis[nx][ny] == 1 || board[nx][ny] != 1) continue; 
                vis[nx][ny] = 1; //방문
                pS.push(new Pair(nx, ny));
            }
        }
    }
}

class Pair implements Comparable<Pair>{
    private int x;
    private int y;

    public Pair(int x, int y){
        this.x = x;
        this.y = y;
    }

    public int getX(){
        return this.x;
    }

    public int getY(){
        return this.y;
    }

    @Override
    public int compareTo(final Pair o){
        if(x == o.x) return Integer.compare(y, o.y);
        return Integer.compare(x, o.x);
    }
}

출처 : https://blog.encrypted.gg/942?category=773649 

 

[실전 알고리즘] 0x0A강 - DFS

드디어 01 02 03 이렇게 숫자를 넘어서 0A강에 도달했습니다. 아직 완결까지는 한참 남았지만 아무튼 힘을 내서 계속 잘 해봅시다. 아, 참고로 저번 단원보다는 내용이 많지 않아

blog.encrypted.gg

 

'교육 > 알고리즘' 카테고리의 다른 글

[JAVA] Greedy  (0) 2022.08.03
[JAVA] DP  (0) 2022.08.03
[JAVA] Backtracking  (0) 2022.08.03
[JAVA] BFS  (0) 2022.08.03
    '교육/알고리즘' 카테고리의 다른 글
    • [JAVA] Greedy
    • [JAVA] DP
    • [JAVA] Backtracking
    • [JAVA] BFS
    가이버2
    가이버2
    개인 개발 블로그 입니다.

    티스토리툴바