Algorithm48 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. 7562 나이트의 이동 (C++) BFS로 풀면되는 문제였다. 그.. 근데 조금 다른거라면, 종료되는 조건이 있다라는 것이다. 보통의 BFS 문제들은 미로통과하기, 다 채워질때의 최솟값 등을 물어보는데, 이건 목적지가 정해져 있고, 나이트가 그 지점으로 이동했을 경우의 수를 리턴하는 문제였다. 구조는 기존의 BFS 문제와 같다. 조건문만 추가 해주고 리턴할 수 있게 해주면 된다. (함수로 나누지 않았다. 일단 구현이 먼저라고 생각해서.. 나중에 시간이 된다면 나누는 작업을 진행하겠다. 코드에 나오는 X,Y 는 pair의 기능인 first, second 의 단축어이다. #define으로 설정해놨으니 헷갈리지 말길 바란다. 그리고 pair에 추가하는 x,y 좌표는 솔직히 x를 먼저 추가하든 y를 먼저 추가하든 상관없는 것 같다. 일단 내가 .. 2021. 4. 25. 2583. 영역 구하기 (C++) www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 전형적인 BFS구현 문제였다. 문제를 한줄로 요약하자면 이거다. 모눈종이에 직사각형이 그려진다. 그려진 직사각형 이외에 박스들이 몇개, 크기가 어떤지를 출력하면 되는 문제다. 각 배열을 돌아가며 그려진 직사각형 이외에 곳을 발견하면 박스 카운트를 추가하고 BFS를 돌리며 크기를 잰다. 아, 그리고 입력에 각 왼쪽 아래 꼭짓점 좌표와 오른쪽 위 꼭짓점 좌표를 주는데, 그 좌표를 이용하여 배열에.. 2021. 4. 23. 1074. Z (C++) Z 시간 제한메모리 제한제출정답맞은 사람정답 비율 0.5 초 (추가 시간 없음) 512 MB 29008 9427 7002 36.800% 문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 왼쪽 위에 있는 칸이 하나가 아니라면, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 다음은 N=3일 때의 예이다. 입력 첫째 줄에 정수 N, r, c가 주어진다. 출력 r행 c열을.. 2021. 4. 21. 11729. 하노이 탑 이동 순서 (C++) 문제는 딱히 모르겠고, 하노이 탑은 너무나 유명해서 모두가 잘 알거라고 생각한다. 하노이 탑은 재귀적으로 푸는 문제들 중 가장 유명하다고 생각한다. 근데 유명한데 그 만큼 어려운 듯 싶다. (물론 내 기준이다.) (알린이..) 하노이탑의 옮기는 구조를 생각해보자. n-1개의 원판을 기둥 1에서 기둥 2로 옮긴다. n번 원판을 기둥 1에서 기둥 3으로 옮긴다. n-1개의 원판을 기둥 2에서 기둥 3으로 옮긴다. -> 원판이 n-1개일 때 옮길 수 있으면 원판이 n개 일때에도 옮길 수 있다. (기존의 뇌 구조를 파괴한다.) 원판이 1개일 때 원판을 내가 원하는 곳으로 옮길 수 있다. 원판이 k개일 때 옮길 수 있으면 원판이 k+1개일 때에도 옮길 수 있다. 라는 결론에 도달해 재귀를 이용하여 문제를 풀 수 .. 2021. 4. 21. 이전 1 2 3 4 5 6 7 8 다음 IT_learning's Commit