일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 그래프
- 트리의지름
- 골드3
- D4
- 완전탐색
- 중복순열
- BFS
- backend
- SW역량평가
- 백준
- 최단경로탐색
- Spring
- 백엔드
- professional
- 골드5
- swea
- dp
- Floyd
- 1251
- 실버1
- 알고리즘
- BOJ
- 최단경로
- 순열
- 스프링
- Framework
- 최소신장트리
- java
- 코딩테스트
- SW역량테스트
- Today
- Total
목록그래프 (3)
공부 기록장

이 문제는 백준 골드 5 레벨의 문제이다. 문제 자체로만 봤을 때는 크게 어려워 보이지는 않는다. 보통은 문제만 캡쳐해오는데 입력까지 가지고 온 이유는, 입력 받는 항목들이 많다. 그래서 풀이 할 때 보기 쉬우라고 입력까지 가져왔다. 일단 시작좌표, 즉 직사각형의 왼쪽 위 좌표를 가지고 bfs를 돌렸다. 만약 지금 내 위치가 도착점이랑 같으면 현재까지 센 횟수를 출력해주는 bfs 문제이다. 하지만 여기서 고려해야 할 점은, 직사각형이 통째로 움직이는 것이기 때문에 직사각형의 왼쪽 위 좌표가 바뀌면 바뀐 점으로부터 직사각형 놓는 것이 가능해야 한다는 것이다. (직사각형을 놓을 자리에 벽이 있으면 안된다.) 그래서 처음에는 bfs를 돌려주고, 왼쪽 위 좌표가 바뀔 때 마다 그 점을 기준으로 H*W 만큼 검사..

이 문제는 백준 골드 3 레벨 문제이다. 바로 전에 썼던 1967 트리의 지름이랑 정말 비슷한 문제인데, 거의 같다고 봐도 무방하다. 입력이 조금 달라서, 한 단계 높게 측정된 것 같다. 1) N이 입력 되고, 2) 정점 하나가 나온다. 3) 그 정점에 연결된 노드와 가중치가 쭉 나오다가 -1이 나오면 다음 정점으로 넘어가는 형식의 입력을 가졌다. 2와 3이 N번 반복되면 입력이 끝난다. 이 처리를 잘 해 주는 것이 이 문제의 관건이었는데, 나는 while문을 사용해서 해결했다. package 그래프; import java.util.LinkedList; import java.util.Scanner; public class 트리의지름_1167 { static int N; static LinkedList[]..

이 문제는 백준 실버 1레벨의 미로탐색 문제이다. dot 라는 자료형을 만들어 r,c 를 이용해 위치를 저장해주고 bfs를 이용하면 금방 풀 수 있다. 핵심이 되는 부분은 check 함수이다. 1) 큐에 시작점 넣기 2) 큐 속에 한 점을 빼서, 상하좌우 네 방향으로 돌아보며 3) 갈 수 있는 길 찾아서 이동하기. + 이동하기 전 방문처리 / 다음 점은 이번점에서 한칸 더 간 거니까 카운트 +1 해주기. 4) 큐가 빌 때까지 반복. static void check(int r, int c) { Queue q = new LinkedList(); q.add(new dot(r,c)); while(!q.isEmpty()) { dot d = q.poll(); for(int i=0; i