본문 바로가기

Programming/Algorithm 193

백준 1726 로봇 정답 참조 1. 1,2,3회에 걸쳐서 같은 방향으로 전진할 수 있는가? 갈 수 있다면 그 방향에 큐를 넣고 그 방향에 대해서 비지트 함수에 넣어 둡니다. 2. 현재 자리에서 턴한 것들에 대해서 큐에 넣어 둡니다. 같은 방향이면 큐에 넣지 않는 다는 것을 알겠는데반대방향에 대해서도 큐에 넣지 않는 이유는 무엇인가요? 예를 들어, 현재 dir = 1 이 어서 동쪽을 바라보고 있는데,i = 1 이어서 동쪽에 대한 것은 안넣습니다. 그런데 opp(1) = 2 입니다.i = 2 일때도 넣지 않습니다.그 이유는 무엇인가요? 아 아래 큐에 넣을때 cnt+1 이 들어가기 때문입니다.저 조건을 없애고, opp 라면 2를 들어가는 코드를 짜보도록 하겠습니다. 오께이 정답 맞습니다. 여기서 굉장히 특이한 점은 visit 가 3차원이라.. 2018. 3. 21.
백준 3055 탈출 1. 이전 불 문제와 똑같습니다. 단순하게 끝나는 지점이 존재하는 것만 다릅니다. 불 문제와 같이 큐에 먼저 물을 넣고 마지막에 스타트를 넣습니다. 그리고 타입과 시간을 저장하는 변수를 같이 큐에 넣습니다. 그리고 큐를 돌리기 시작합니다. 큐를 돌리면서 물을 넘쳐나고 고슴도치는 이동합니다. 이동할 수 있는 곳으로, 그리고 다시 물음 넘치고 고슴도치는 이동할 수 있는 곳으로 이동합니다. 검사는 마지막에 도착점 옆에 동서 남북 중에 한 곳에 고슴도치가 위치하고 있다면 시간+1 을 해서 종료를 시키도록 합니다. 2018. 3. 21.
백준 5427 불 정답 참고 불, 5427번 문제. 상근이 빈 공간과 벽으로 건물에 갇혀 있습니다. 여기서 처음에 큐를 돌때에, 단순하게 처음에 다 넣고 나서 마지막에 상근이를 이동시키면 됩니다. 1. 문제 그대로 코딩하는 것이 필요합니다.분할 하는 것도 필요합니다. 어떻게 하는 것이 좋을지 생각을 합니다.문제가 꼬이지 않도록 구현하는 것이 가장 좋습니다. 이 문제에서는 불이 나가고 상근이가 움직이고, 이런식으로 표현하면 되고,큐에 x,y 뿐만 아니라 sec 와 type 을 넣어서 체크하고 있습니다.초마다 점진적으로 움직이는 것은 bfs 를 사용하면 됩니다. 처음 사용한 방법도 틀리지는 않지만, 따로 구현하게 되면 디버깅하는 것이 쉽지 않습니다. 초에 따라서 변하는 것이기 때문에, 초에 따라서 변화가 모두 완성되도록 구현합니다. 탈.. 2018. 3. 21.
백준 1937 욕심쟁이 판다 정답 참조 /*1601 욕심쟁이 판다엔엔의 크기의 대나무 숲이 있습니다. 옮긴 지역에 그 전 지역보다 대나무가 많이 있어야 한다.단식 투쟁을 하다가 죽게 됩니다.이런 판다를 대나무 숲에 풀어 놓아야 하는데, 어떤 지점에 처음에 풀어 놓아야 하고, 어떤 곳으로 이동을 시켜야 둘 다 소중한 생명이지만판다가 최대한 오래 살 수 있는지 고민에 빠져 있습니다. 아무 곳에 떨어트려 놓고, 동 서 남 북 방향으로 dfs 를 돌리면 되겠습니다.그리고 갈 곳이 없을때의 최대 거리를 비교해서 적어두면 됩니다.*/ #include #include using namespace std; #define SIZE 501 // 501int map[SIZE][SIZE];int visit[SIZE][SIZE];int d[SIZE][SIZE];in.. 2018. 3. 20.
백준 1938 통나무 옮기기 #include #include #include #include #include using namespace std; struct pt {int x;int y;int d; pt(int a, int b, int c) :x(a), y(b), d(c) {} }; int n; char board[53][53];int visited[52][52][2];int dist[52][52][2]; vector avail(const pt& cur){vector ret; int dd[4][2] = { { -1,0 },{ 0,1 },{ 1,0 },{ 0,-1 } };bool res[4] = { 0 };bool range = true;for (int i = 0; i 2018. 3. 19.
백준 2468 안전 영역 1. 비가 아예 안오는 경우도 고려해야 합니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123/*0950 안전 영역*/ #include #include #include using namespace std; #define SIZE 101 // 101 int map[SIZE][SIZE];int.. 2018. 3. 19.
백준 연산자 끼워넣기 /*0852 연산자끼워넣기2개의의 수열이 들어오고5, 6이 들어오고곱하기가 있습니다. */ #include #include using namespace std;#define SIZE 12int numArr[SIZE];int operArr[SIZE];int N;int minVal = 2123456789;int maxVal = -2123456789; void problemIn() {cin >> N;for (int i = 0; i > numArr[i];}for (int i = 0; i > operArr[i];}} void dfs(int depth, int a, int b, int c, int d, int sum) { if (a == 0 && b == 0.. 2018. 3. 10.
백준 2583 영역 구하기 bfs 문제 이제, 다 풀 수 있습니다. 응용도 가능합니다. 원하는 자료구조도 만들어서 클리어! 2018. 3. 8.
백준 4963 섬의 개수 /*1611 유기농 배추1654 401012 번문제입니다.배추를 흰지렁이의 마리 수를 출력하세요. 섬의 갯수를 세는 문제와 동일 합니다.1이 있는 곳에서 갈 수 있는 곳에 비지트 처리를 하고,또 다른 1을 찾아서 비지트 처리를 하고 이런식으로하면서 cnt++ 를 visit 에 넣으면 됩니다. 오께이. */ #include #include #include using namespace std; #define SIZE 51 // 50; int W, H;int map[SIZE][SIZE];int visit[SIZE][SIZE];int ans;int a, b;int x, y, nx, ny;int dx[] = { 0,0,1,-1,-1,-1,1,1 };int dy[] = { 1,-1,0,0,-1,1,-1,1 };in.. 2018. 3. 8.
백준 1012 유기농 배추 /*1611 유기농 배추1012 번문제입니다.배추를 흰지렁이의 마리 수를 출력하세요. 섬의 갯수를 세는 문제와 동일 합니다.1이 있는 곳에서 갈 수 있는 곳에 비지트 처리를 하고,또 다른 1을 찾아서 비지트 처리를 하고 이런식으로하면서 cnt++ 를 visit 에 넣으면 됩니다. 오께이. */ #include #include using namespace std; #define SIZE 51 // 50; int N, M, K;int map[SIZE][SIZE];int visit[SIZE][SIZE];int ans;int a, b;int x, y, nx, ny;int dx[] = { 0,0,1,-1 };int dy[] = { 1,-1,0,0 };int wormCnt = 1; struct points {int.. 2018. 3. 8.