Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- servlet프로젝트
- 객체지향생활체조
- ObjectCalisthenics
- 테코톡
- 우아한테크코스
- 트랜잭션성질
- 코틀린기초
- 레벨로그
- 코틀린뽀개기
- 트랜잭션속성
- 코틀린
- KotlinInAction
- 무중단배포
- tomcat설정
- 데이터베이스락
- subprocess에러
- GithubOAuth
- DynamicWebProject
- 리버스프록시
- S2139
- mysqld.sock
- 백준
- jsp프로젝트
- kotlin
- 트랜잭션
- 알고리즘
- java
- Google Place Photo API
- 스프링트랜잭션
- 자바비동기
Archives
- Today
- Total
초이로그
[BOJ]2206:벽 부수고 이동하기 본문
최단 거리를 구해야하므로 BFS 문제이다.
처음에는 큐마다 방문 배열을 함께 넣어서 풀었었다.
static class Point {
int x;
int y;
boolean wall;
int[][] vis;
public Point(int x, int y, boolean wall, int[][] vis) {
this.x = x;
this.y = y;
this.wall = wall;
this.vis = vis;
}
}
// ...
private static int bfs() {
// ...
Queue<Point> queue = new LinkedList<>();
// ...
}
하지만 N*M 최대가 1000 * 1000이다보니 배열을 계속 생성해서 메모리 초과가 난다.
그리고 처음에 메모리 초과가나는 이유가 궁금해서 찾다가 힌트를 봐버렸다....
좌표별로 벽을 부순적이 있는가 없는가로 구분되므로 매번 번거롭게 배열을 복제할 필요없고 visited[N][M][부순적이있는가]로 사용하면 메모리를 효율적으로 관리할수 있다.
https://github.com/SuyeonChoi/Algorithms/blob/master/BaekJoon/Java/BFS.DFS/p2206.java
'Algorithms > BOJ' 카테고리의 다른 글
[BOJ]17071:숨바꼭질5 (0) | 2021.10.05 |
---|---|
[BOJ]17135:캐슬 디펜스 (0) | 2021.10.05 |
[BOJ]11286:절댓값 힙 (0) | 2021.07.19 |
[BOJ]1766:문제집 (0) | 2021.07.18 |
[BOJ]9466:텀 프로젝트 (0) | 2021.05.31 |