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
- 리버스프록시
- KotlinInAction
- tomcat설정
- 레벨로그
- 트랜잭션속성
- 데이터베이스락
- S2139
- 트랜잭션성질
- DynamicWebProject
- GithubOAuth
- Google Place Photo API
- 객체지향생활체조
- 코틀린뽀개기
- 우아한테크코스
- 스프링트랜잭션
- subprocess에러
- 자바비동기
- java
- servlet프로젝트
- kotlin
- jsp프로젝트
- 코틀린
- 알고리즘
- 백준
- 코틀린기초
- ObjectCalisthenics
- 트랜잭션
- 테코톡
- 무중단배포
- mysqld.sock
Archives
- Today
- Total
초이로그
[BOJ]9205:맥주 마시면서 걸어가기(BFS, 플로이드) 본문
작년엔 보고 헉 하고 넘겼던 문제
오늘도 보고 헉 하긴 함;;
while (! queue.isEmpty()){
myPoint cur = queue.poll();
if(cur.x == cvs[N][0] && cur.y == cvs[N][1]) {
isHappy = true;
break;
}
for(int i = 0; i < N+1; i++){
int dist = calcDist(cur.x, cur.y, cvs[i][0], cvs[i][1]);
if(!vis[i] && dist <= 1000){
vis[i] = true;
queue.offer(new myPoint(cvs[i][0], cvs[i][1]));
}
}
}
원래 플로이드는 3중 for문 안에서 가중치값을 min으로 갱신하지만 이문제는 x, y축이 각각 1000 이하인지 확인하기만 하면 된다
for (int k = 0; k < N + 2; k++) {
for (int i = 0; i < N + 2; i++) {
for (int j = 0; j < N + 2; j++) {
if (i == j || i == k || j == k) continue;
if (chk[i][k] && chk[k][j]) {
chk[i][j] = true;
}
}
}
}
결과 비교
예상대로 bfs가 훨씬 빠르게 돌아간다.
플로이드는 n이 작아야 가능한 이야기. 여기서는 n이 100이하라 통과된듯
플로이드:
bfs:
이제 나도 맥주마시러!
'Algorithms > BOJ' 카테고리의 다른 글
[BOJ]9466:텀 프로젝트 (0) | 2021.05.31 |
---|---|
[BOJ]1937:욕심쟁이 판다 (0) | 2021.04.06 |
[BOJ]1463:1로 만들기 (0) | 2021.03.24 |
[BOJ]2636:치즈 (0) | 2021.03.24 |
[BOJ]16562:친구비 (0) | 2021.03.19 |