일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 삼성 SW 테스트
- 너비 우선 탐색
- IOS
- 후쿠오카
- 삼성시험
- 큐
- 일본 여행
- 후쿠오카 여행경비
- 다이나믹 프로그래밍
- dfs
- 미로찾기
- 삼성테스트
- deque
- 후쿠오카 요도바시 하카타
- 플로이드 와샬
- 시뮬레이션
- 후쿠오카 4박 5일
- 백준
- 완전탐색
- 하카타역
- 플로이드
- 완전 탐색
- 후쿠오카 캐널시티
- BFS
- BOJ
- DP
- 깊이 우선 탐색
- 알고리즘
- queue
- brute force
- Today
- Total
목록미로찾기 (5)
맛있는감귤
문제 : https://www.acmicpc.net/problem/1261일반적인 미로찾기에서 아주 사알짝 업그레이드 된 문제.1. 벽 어느 벽을 부쉈냐에 따라 이동경로가 달라질 수 있기 때문에 주의하도록 하자.2. 또 최소 이동거리가 아닌 부순 벽의 개수가 최소가 되어야 하기 때문에 모든 이동경로를 비교해야 한다. 비슷한 문제2206 벽 부수고 이동하기 / 해설14442 벽 부수고 이동하기 2 / 해설 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include using namespace std; struct Pos{ public: int r,c,crash; Pos(){} Pos(int..
문제 : https://www.acmicpc.net/problem/13913기존 1697 숨바꼭질 과 같은 문제지만 추가로 지나온 경로를 출력을 요구한다는 점에서 차이가 있다.처음에는 queue에 경로 벡터를 추가해서 노드마다 경로 값을 가지는 무식한 짓을 벌였다.어처피 목적지에 도달하는 최소 경로중 하나만 출력하면 되기 때문에 배열 하나로 지나온 경로를 관리하는 방법으로 AC를 얻었다.visited[다음 경로] = 현재 경로 가 된다. 그리고 목적이에 도달했을 때 목적지에서 출발지까지 뒤로 탐색해 vector에 push한 다음 다시 출력하게 되면 원하는 경로가 출력될 것이다.123456789101112131415161718192021222324252627282930313233343536373839404..
문제 : https://www.acmicpc.net/problem/1726출처Olympiad > 한국정보올림피아드시․도지역본선 > 지역본선 2005 > 고등부 3번 명령어 go K의 의미를 잘못 해석해서 해맸었는데 결론은 총 다섯 가지 방법을 탐색하면 됩니다go 1, go 2, go 3, 90도 회전 -90도 회전.가장 중요한 것은 visited배열의 활용, 예외사항 판별, 실행 가능한 명령어 구분입니다.1. 방향 구분없이 이동만 한다면 좌표에 해당되는 2차원 visited배열을 만들었겠지만 방향이 존재하기 때문에 방향에 따른 visited배열을 추가하여 3차원 배열 생성2. 맵 이탈, 재방문, 궤도가 아닌 곳을 예외처리3. go 1,2,3 / 90도, -90도 회전먼저, 좌표와 방향, 그리고 명령어 횟..
문제 : https://www.acmicpc.net/problem/2206 github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/2206.cpp BFS를 이용한 미로찾기에서 벽을 부수는 스킬이 추가되었다. 종종 벽을 부순다거나 폭탄이 주어진다거나 하는 문제 유형이 있는데 그 중의 기본 문제이다. 내 해결 방법은 방문체크(isVisited)배열을 한 차원 더 늘려 벽을 부쉈을 때, 안 부쉈을 때를 나눠 탐색했다. 더 좋은 해결 방법이 있으면 댓글 남겨주시면 감사하겠습니다. #include #include using namespace std; struct Pos{ int x,y,bomb; }; int N,M,dis=1,ans=0; char map[1001..
문제 : https://www.acmicpc.net/problem/2178 github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/2178.cpp 지극히 기본적인 BFS 문제 #include #include using namespace std; int N,M,ans=1; queue q; char map[102][102]; bool isVisited[102][102]; int px[4]={1,-1,0,0}; int py[4]={0,0,1,-1}; int main(){ cin>>N>>M; for(int i=0; i>map[i]; pair s; s.first=0, s.second=0; isVisited[s.first][s.second]=true; q.push..