정코딩
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
Home
  • 분류 전체보기 (421)
    • 알고리즘 (382)
      • Baekjoon (301)
      • SW Academy (39)
      • JUNGOL (7)
      • 프로그래머스 (33)
    • CS (4)
      • 알고리즘 (1)
    • 공부 (19)
      • JAVA (6)
      • BackEnd (4)
      • FrontEnd (3)
      • 프로젝트 (6)
    • 일상 (16)
      • 기타 (16)
블로그 내 검색
Portfolio

정코딩

동의대학교 컴퓨터공학과 SSAFY 6기

  • 알고리즘/Baekjoon

    Baekjoon 14923 미로 탈출 JAVA

    2021. 12. 7.

    by. soonil

    https://www.acmicpc.net/problem/14923

     

    14923번: 미로 탈출

    홍익이는 사악한 마법사의 꾐에 속아 N x M 미로 (Hx, Hy) 위치에 떨어졌다. 다행히도 홍익이는 마법사가 만든 미로의 탈출 위치(Ex, Ey)를 알고 있다. 하지만 미로에는 곳곳에 마법사가 설치한 벽이

    www.acmicpc.net

    https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2014923

     

    GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드

    JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.

    github.com

    해당 문제는 map정보가 주어지고 출발 도착 좌표가 주어졌을 때 출발점에서 도착점까지

    가는데 걸리는 칸수를 구하는 문제다.

    단 벽은 지날수 없지만 1회만 부를 수 있다.

     

    예전에 풀었던 벽 부수고 이동하기 문제와 동일한 문제다.

    https://soonil.tistory.com/261

     

    Baekjoon 2206 벽 부수고 이동하기 JAVA

    https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에

    soonil.tistory.com

     

    해당 문제는 bfs를 이용해서 해결했으며, 벽 부슨 정보와 이동 칸수는 class를 하나 선언해

    데이터를 같이 관리하는 방식으로 처리했고,

    방문처리부분에서는 3차원 배열을 이용해서 벽을 부슨경우와 아닌 경우로 나눠서

    체크하는 방식으로 처리했다.

     

    입력처리를 하고 시작 도착 좌표를 입력받을 땐 문제는 1,1에서 시작하지만 0,0에서 시작하는 것으로

    하기 위해 -1을 해주었고, 이후 map을 입력받아준 뒤 bfs를 돌린다.

     

    bfs에서는 최초 시작점을 큐에 넣고 시작하며, 만약 큐에서 빼낸값이 도착 값이랑 같으면 큐에 저장된 cnt를

    출력해주고 bfs를 끝내며, 그렇지 않으면 범위를 벗어났는지 아니면 이미 방문했는지 등을

    체크해서 로직에 맞도록 구현하였다. 만약 bfs를 빠져나오지 않고 끝까지 가게 되면

    도착을 하지 못한다는 소리기 때문에 -1을 출력하고 끝낸다.

    728x90

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

    Baekjoon 14425 문자열 집합 JAVA  (0) 2021.12.09
    Baekjoon 16948 데스 나이트 JAVA  (0) 2021.12.08
    Baekjoon 14719 빗물 JAVA  (0) 2021.12.04
    Baekjoon 2638 치즈 JAVA  (0) 2021.12.04
    Baekjoon 2609 최대공약수와 최소공배수 JAVA  (0) 2021.12.04

    댓글

    관련글

    • Baekjoon 14425 문자열 집합 JAVA 2021.12.09
    • Baekjoon 16948 데스 나이트 JAVA 2021.12.08
    • Baekjoon 14719 빗물 JAVA 2021.12.04
    • Baekjoon 2638 치즈 JAVA 2021.12.04
    맨 위로
전체 글 보기
  • Baekjoon
  • Solved
  • Github
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
soonil

티스토리툴바