재귀 4

백준 2579 [python]

내 풀이1. 목적지에서 시작하여 시작 지점까지 재귀 함수를 호출한다.2. 목적지로 올 수 있는 경우에 대해 최대값을 구하고 최대값에 현재 계단의 값을 더해 최대값을 구한다. Ex) 5번째 계단의 경우 3번과 4번에서 올 수 있으므로 둘 중 최대값을 구하고 5번째 계단의 값을 더해 최대값을 구한다. 3. 연속으로 세번 이동하는 경우에 대한 예외 처리를 해주기 위해 cnt 값이 3이 되면 0을 반환하게 한다.4. 목적지에 따라 오는 경우의 수의 최대값이 다르기 때문에 이를 고려하여 dp 테이블을 생성한다. 특정 목적지로 오기 위한 최대값이므로 다름 Ex) 4번에 도착하기 위한 2번의 최대값과 3번에 도착하기 위한 2번의 최대값이 다를 수 있음 몇 번째 계단인지랑, 연속으로 몇 번 이동했는지..

알고리즘 2024.11.28

백준 1912 [python]

문제n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.입력첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.출력첫째 줄에 답을 출력한다.1차 시도 코드import sysN = int(sys.stdin.readline().rstrip())arr = list(map(int, sys.stdin..

알고리즘 2024.11.27

백준 2447 [python]

문제재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다.크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다.**** ****N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.입력첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k 출력첫째 줄부터 N번째 줄까지 별을 출력한다.내 풀이1. 반복문을 사용하여 각 행에 대하여 함수를 실행시킨다. 2. 각 행을 idx로 가정하고 인덱스가 특정..

알고리즘 2024.11.22

순환(재귀), 반복

재귀 (순환)재귀란 주어진 문제를 해결하기 위해 자신을 다시 호출하는 프로그래밍 기법분할정복 > 재귀 - 기술면접 피보나치, 이항계수, 이진 트리 알고리즘 등등 ** 재귀함수의 핵심 요소 두 가지1. 종료 조건 (기본 케이스 - Base case)- 재귀 함수가 종료되는 조건이 반드시 필요하다.2. 문제 축소(재귀 케이스 - Recursive case)- 재귀 함수는 큰 문제를 반드시 작은 문제로 축소시켜야한다.재귀 활용- 트리와 그래프 순회- 분할 정복 알고리즘- 동적 프로그래밍- 백트래킹 알고리즘직접 재귀와 간접재귀직접 재귀 - 함수가 직접 자기 자신을 호출간접 재귀 - 함수 A가 함수 B를 호출하고, B가 다시 A를 호출하는 형태장점- 코드가 간결해지고 이해하기 쉬움- 일부 알고리즘을 자연스럽게 표..