본문 바로가기

Algorithm/백준22

15683 감시 (C++) #include using namespace std; #define X first #define Y second int board1[10][10]; // 원래 보드 작성 칸 int board2[10][10]; // 사각 지대의 개수를 세기 위한 보드 int n,m; int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; vector cctv; bool OOP(int a,int b) { return a = n || b = m; } // (x,y)에서 dir 방향으로 진행하며 벽을 만나기 전까지 지나가는 모든 칸을 7로 바꿈 void func(int x, int y, int dir) { dir %= 4; while(1) { x += dx[di.. 2021. 5. 1.
6593 상범 빌딩 (C++) 하....아.... 뭐같은 문제...라고 하기엔 내 실수가 너무나도 커서... 아무튼..이 문제는 여느 BFS문제와 똑같이 BFS로 풀면 되는 문제였다. 정육면체로 이루어진 빌딩에서 동,서,남,북,상,하 로 총 6개의 방향으로 움직일 수 있고, 그 움직이는 횟수에 따라 1분이 소요된다. 라고 나와있다. 그 말인 즉슨, 조건에 맞는 이동을 했을 경우 시간을 1 늘려주면 된다. 만일 이동할 수 없거나 E에 도달하지 못하면 Trapped! 가 뜨게 하면 된다. 그리고 0,0,0 좌표를 입력하면 종료하는 조건으로 이 프로그램을 종료 시키면 된다. 근데 저 무수히 찍힌 틀렸습니다는 사실 로직은 맞았지만, 출력문이 이상해서 틀렸습니다가 뜬거다. 근데 난 1시간이상을 내 로직에 문제가 있나? 뭐가 문제지? 라며 온갖.. 2021. 4. 28.
15656 N과M (7) (C++) N과 M 시리즈 문제가 생각보다 재밌다. (뭐 잘 풀려서 그런거지..이러다가 안풀리면 재미없다고 한다 또) 아무튼. 이 문제는 itlearning.tistory.com/entry/15651-N%EA%B3%BC-M3-C 15651 N과 M(3) (C++) 음... 일단 내가 생각한건 이거다... 기존의 백트래킹은, 그냥 한번 올라가거나, 뿌리 내려지기 전의 수부터 시작을 하지 않는다고 생각했다. 그래서 아얘 그냥 위부터 쭈우우우욱 올라가서 다시 itlearning.tistory.com 이 문제와 똑같다. 단지 수열을 내가 입력하는 것이 추가된 것 뿐. 그래서 이 문제의 답을 참고해서 코드를 작성했다. 문제의 해결법은 이렇다. 원하는 수열을 입력받고, 입력받은 수열을 배열에 저장한 뒤, 출력하는 수열을 따로.. 2021. 4. 26.
15654 N과M (5) (C++) 아 점점 손에 익어간다 진짜로... 어떻게 구동 되는지 보인다.. 거두절미하고. 이 문제는 기존에 입력이 N개의 자연수 중에서 M개의 수열을 출력하는 것이었다면, 이건 수열을 직접 골라서 출력해야 한다. 그리고 그냥 수열을 나열하는게 아니라, 사전 순으로 증가하는 순서로 출력까지. 근데 이건 생각보다 간단하다. 그냥 입력을 받을 board[] 배열 하나, 받은 입력을 순열로 표현할 arr[] 배열. 그리고 방문의 여부를 확인해주는 isused[] 배열을 이용하면 끝이다. #include using namespace std; #define endl '\n' int n,m; int board[10]; int arr[10]; int isused[10]; void func(int k) { if(k == m) {.. 2021. 4. 25.
15652 N과M (4) (C++) 아아 점점 손에 익어가는 듯 싶다. 전 문제는 솔직히 찍어서 맞춘감이 없었지만, 이건 정말 "이렇게 하면 어떨까?" 라는 사고를 꺼냈다. itlearning.tistory.com/entry/15651-N%EA%B3%BC-M3-C 15651 N과 M(3) (C++) 음... 일단 내가 생각한건 이거다... 기존의 백트래킹은, 그냥 한번 올라가거나, 뿌리 내려지기 전의 수부터 시작을 하지 않는다고 생각했다. 그래서 아얘 그냥 위부터 쭈우우우욱 올라가서 다시 itlearning.tistory.com 위의 이전문제와 다른점은, 출력하는 숫자가 늘어가며 출력되는 숫자 또한 바뀐다는 것이다. 하나 늘어날 때마다 그 숫자부터 출력할 수 있게 하는 것이다. 이건 생각보다 간단했다. 그냥 진행되는 for문에 변수를 이중.. 2021. 4. 25.
15651 N과 M(3) (C++) 음... 일단 내가 생각한건 이거다... 기존의 백트래킹은, 그냥 한번 올라가거나, 뿌리 내려지기 전의 수부터 시작을 하지 않는다고 생각했다. 그래서 아얘 그냥 위부터 쭈우우우욱 올라가서 다시 출력하고 쭈우우욱 올라가서 출력하고..를 원했다. 그래서 그걸 표현한 코드가 있다. 근데 왜 작동 되는건지 모르겠다.. 어떻게든 이해해보자. #include using namespace std; #define endl '\n' int n,m; int board[10]; int isused[10]; void func(int k) { if(k == m) { for(int i = 0; i m; func(0); } 자. 먼저 들어가서 수를 넣고, 방문했다라는걸 표현하는 isused의 배열.. 2021. 4. 25.

IT_learning's Commit