재귀 4

[백준-파이썬] 17829: 222-풀링

문제 풀러 가기 행렬의 한 쪽 길이 N이 주어진다. 이 행렬에서 2X2 정사각형씩 보면서, 그 중에 2번째로 큰 수를 모아서 새로 행렬을 만든다. 그러다가 1X1 행렬이 되면 그때 남은 값을 출력해야 한다! 그러면 처음에는 행렬의 한 변은 처음에는 N이었다가 그 후에는 N//2가 된다. 그러다가 1이 되면 그때의 값을 리턴해야 하니까 그걸 종료 조건으로 생각했다. 또 2X2 정사각형들이 있을텐데, 그런 정사각형은 N//2 X N//2가 있다. 또 N//2 X N//2 사이즈의 새로운 리스트(tmp_arr)가 생기니 그 사이즈로 리스트를 만들어뒀다. 정사각형들의 가로 인덱스들은 0X2, 1X2, .... (N//2)X2에서 출발하게 된다. 세로 인덱스들도 마찬가지이다. 그 인덱스에서 시작해서 그 다음 인덱..

[백준-파이썬] 4779: 칸토어 집합

문제로 가기 길이가 3^N인 리스트를 만들었다. 칸토어 집합은 일단 -가 3^N개인 문자열에서 시작하니까~~ 그 후에 sol함수를 실행한다. 재귀함수인데, 몇 번 더 볼지, 시작점과 끝점을 받는다. 시작점과 끝점은 그 선 중에서 어느 부분을 보고 있는지를 뜻한다. 몇 번 더 볼지가 0이 되면, return한다. 그게 아니라면 시작점과 끝점을 가지고 3등분을 해서, 가운데 부분은 공백으로 바꾼다. 왼쪽과 오른쪽 부분은 또 sol 함수로 넣는다. 몇 번 더 볼지는 1 감소하고, 왼쪽과 오른쪽 부분의 시작점과 끝점을 구해서 그걸 넣는다. import sys input = sys.stdin.readline def sol(n, i, j): # 몇 번 더 볼지, 시작점, 끝점 if n == 0: return # 3..

[백준-파이썬] 20164: 홀수 홀릭 호석

문제 보러 가기~~ 아이디어 🤩 몇 자리 숫자가 들어오는지에 따라서 다른 행동을 하라고 했다. 그래서 숫자(단, str 형식으로 입력받음)와 그때까지 더한 홀수의 합을 받아서, 특정한 행동을 하는 함수를 만들었다. 몇 자리인지에 따라서 다른 행동을 하고, 한 자리가 되어서 종료될 때까지 재귀로 계속 돌린다. 한 자리 -> 그때까지의 홀수의 개수를 리스트에 추가하고 리턴! (나중에 최대 홀수의 개수, 최소 홀수의 개수를 출력한다.) 두 자리 -> 그 수를 두 개로 나눠서 합을 구해서 새로운 수로 생각한다. (12면 1과 2로 나눈다. -> 1+2를 해서 3을 새로운 수로 생각하기) => 새로운 수, 그때까지 홀수의 합 + 이 새로운 수에 들어간 홀수의 개수를 인자로 주어서, 또 함수에 넣는다. 세 자리 이..

728x90