일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java.sql.SQLSyntaxErrorException
- tomcat log
- 해외주식 양도세 신고
- katalon xpath
- 한국투자증권 양도세 신고
- CSTS 폭포수 모델
- 테스트 자동화
- recursion example
- 최대공약수 예제
- 재귀함수 예제
- 피보나치함수 예제
- git 연동
- katalon 비교
- 피보나치함수
- oracle group by
- 국세청 해외주식 양도세 신고방식
- 한국투자증권 해외주식 양도세
- 톰캣 실시간 로그
- bfs 미로탐색 java
- 피보나치 예제
- js 자동완성
- katalon
- 홈택스 해외주식 양도세
- Katalon Recorder 사용법
- 재귀 예제
- katalon 자동화
- 해외증권 양도세 한국투자증권
- 주식 양도세 신고방법
- javascript 자동완성
- katalon 사용법
- Today
- Total
목록bfs 미로탐색 java (6)
엄지월드
문제 접근 방법 1. mapCountDFS를 통해 빙산이 두 덩어리 이상으로 되어 있는지 확인을 진행한다. 2. globalWarmingBFS를 통해 빙산을 녹여주는 작업을 진행한다. 헷갈렸던 점 - 빙산이 녹으면서 한번에 모두 0이 되어 덩어리가 0이 되는 경우를 잘못 처리해줬었다. 그래서 녹으면서 한번에 모두 0이 되면 result = 0; 으로 다시 초기화를 진행해주었다. int result = 0; while(true){ int mapCount = countMapDFS(); if(mapCount == 0){ // 모두 녹아 있을 때에 처리 result = 0; break; } ... ... } - 6%에서 계속 틀렸습니다.가 떠서 질문 게시판에 있는 반례를 모두 적용해보았으나, 정상 작동하였다. ..
접근 방법 불과 사람을 1번씩 움직여주면서 탈출이 가능한지 찾아본다. 불과 사람이 만나면 실패이기 때문에, while문에서 사람보다 불을 먼저 이동해준다. 특이점 visited 배열을 사람과 불을 각각 운영해주려고 했으나, 함께 운영해주어도 문제가 없다. 왜냐하면 어차피 불이 이동한 곳은 사람이 이동하지 못하고, 사람이 이동했던 경로를 불이 이동할 필요는 없기 때문이다. 로직은 맞는 것 같은데 시간초과가 나서 계속 분석해 보니.. for(int k = 0; k < qSize; k++) { 부분에서 for 문안에 Man now = q.poll(); 을 포함했어야 했는데, for 문 위에 Man now = q.poll();이 있어서 계속해서 시간초과가 발생했었다. 이유는 사람의 개수대로 for 문이 돌아야 ..
접근 방법 dx 배열에 이동 경로를 입력 int[] dx = new int[]{-1, 1, 2} BFS 문제와 동일하게 Queue에 값을 넣어서 계속해서 알까기 진행 People class를 운영하여 걸린 시간을 계속해서 더해주었다. -> People class 선언 시, static으로 하지 않으면 에러가 나서 static으로 선언해 주었다. 특이점 기존에 BFS 문제들과 비교했을 때에 좌표가 아닌점이 신선했다. visited를 운영하지 않았더니 시간초과가 발생했다. visited 배열의 크기를 x,y 중에 큰 값으로 했더니, 10 19와 같이 x2후에 -1을 하는 케이스에서 오류가 발생해서 입력 범위의 전체로 늘려주었다. visited = new boolean[1000001]; 원래 continue를..
접근 방법 전체 배열을 탐색하여 BFS 시작 전에, 1이 포함된 위치를 Queue에 모두 넣어준다. (ArrayList arr = new ArrayList();) BFS 탐색 시, 범위를 벗어나지 않거나, 방문하지 않았거나, 0인 부분을 계속해서 탐색해준다. 특이점 기본 BFS는 0(벽)일때 continue를 해주지만, 해당 문제는 num이 여러개 일 수 있기 때문에 다른 num을 침범하지 않기 위해 if(map[nextX][nextY] != 0) continue; 처리해준다. 이동한 부분에서 max 값을 찾기 위해 계속해서 갱신해준다. max = Math.max(max, map[nextX][nextY]); package Baekjoon; import java.io.BufferedReader; impor..
소스 해석 int graph[][] 배열을 만들어주고, 값을 할당 boolean check[] 배열을 만들어주고, 값을 할당 queue를 활용하여 graph를 탐색 시작 1부터 주어진 값까지 순회하기 위해 for 문을 활용하고 for문에서는 방문하지 않았고, 이동 가능한 graph가 있는지 확인을 진행 이동 가능한 graph가 있으면 queue에 값을 넣어주고, visited[]를 true로 처리해줌. package Baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import ..
설명 N x M 배열이 있을 때에 1이 이동 가능한 위치이고, 0이 이동 불가한 위치이다. N,M 위치까지 가는 방법에 대해서 최소한의 경우를 출력해준다. 소스 해석 map에다가 문제에서 주어진 값 0, 1을 저장 특정 부분을 방문했는지 체크하기 위해 visited 배열 운영 queue를 활용해서 시작 위치를 넣어주면서 BFS 시작 for문을 활용해서 이동가능한 상화좌우를 탐색하고, 이동 가능한 부분이 있으면 새로운 queue를 생성해서 계속해서 탐색할 수 있도록 함. 이동이 불가하면 queue에 값을 넣지 않음 모든 queue에 있는 값이 이동이 불가하면 queue에 추가적으로 값을 넣지 않기 때문에 queue가 비어져서 while(탐색)이 종료됨. package Baekjoon; import java..