혼종 꼬지마루
와...벽에 튕기는 경우가 한방향으로만 한바퀴 돈다고 계속 생각해서 계속 틀렸다... 이래서 사람이 멍청하면 몸이 고생한다고 하나보다... 리뷰를 하면서도 얼탱이가 없넼ㅋㅋㅋㅋ 일단 이 문제는 좌표계가 문제 예시1번 처럼 생각하면 백타 틀린다 즉, 입력으로 주어지는 좌표계를 그대로 사용해야한다 그 이유는 K가 0.5의 배수이기 때문에 좌표계 자체를 2배 늘려준다고 생각하면 편하다 1. map을 그대로 입력받는다 2. 주어진 map에서 블록들을 각각 그룹으로 만들어 주기 위해 BFS를 사용하여 번호를 붙인다 3. 이렇게 만들어진 visit을 map으로 사용해야한다 시작위치를 y = 2*N, x = 2*K로 잡고 시작(나는 주로 N을 y로, M을 x로 두고 사용하기 때문에 입력을 거꾸로 받음) 4. 끝까지 ..
기존 값을 저장하고, 그걸 불러와야 답을 구할 수 있다... 그래서 메모이제이션이 중요하기 때문에 DP라고 생각함 1. 순차적으로 map을 검사하면서 방문하지 않은 지점이라면 DFS로 탐색 2. 방문한 지점이라면 그 방문한 지점의 값을 반환 3. 이렇게 끝까지 같다가 돌아오면 리턴된 값과 답을 비교하여 답을 찾아준다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include #define MAXSIZE 1002using namespace std; char map[MAXSIZE][MAXSIZE];int visit[MAXSIZE][MAXSIZE];int dx[] = { 0, 0, -1, 1 };int ..
큐를 사용하지만 시뮬에 더 가깝다는 느낌이 들어서 simulation에 분류했다. 일단, 대기 순서를 기다린다는 것에서 유명한 문제인 은행업무 기다리기? 같은 문제처럼 이분 탐색을 하던지, 직관적으로 queue를 사용하여 시뮬레이션처럼 풀지 고민하다가 그냥 범위도 작길래 queue를 사용하였다. 1. 트럭을 다리위에 올리기 전에 트럭이 빠져 나올 수 있는지를 먼저 검사한다. - 트럭이 들어간 시간과 현재 지난 시간이 다리의 길이보다 클경우 pop한다 2. 1번의 검사를 마치면 큐에 문제의 조건에 만족할 수 있는 범위 내에서 큐에 넣어준다. 3. 1, 2번의 과정을 거치지 않는다면 시간을 늘려서 순차적으로 검사한다. 12345678910111213141516171819202122232425262728293..