일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- guide
- UE5
- dfs
- Algorithm
- 오류
- dynamic
- DP
- Unity
- github
- String
- Programming
- Tutorial
- c++
- loop
- 파이썬
- Unreal Engine 5
- 기초
- 백준
- python
- C#
- w3school
- parameter
- W3Schools
- 문제풀이
- 프로그래밍
- 재귀
- Class
- Material
- 시작해요 언리얼 2022
- Basic
- Today
- Total
목록Algorithm (107)
행복한 개구리

N = int(input()) result = 0 for gen in range(N + 1): A = list(map(int, str(gen))) result = gen + sum(A) if N == result: print(gen) break if gen == N: print(0) break 우선 중첩반복문이 아닌 0부터 N까지의 반복문으로 실행하였습니다. A는 gen의 각 숫자들을 리스트형식으로 만든 것입니다. result는 gen과 gen의 각 숫자들의 합을 더한 것입니다. N과 result(gen과 gen의 각 자리 숫자들의 합)이 같다면 반복문에서 gen은 0부터 1씩 올라가는 형식이므로 가장 먼저 조건에 일치한 것이 가장 작은 생성자입니다. 따라서 gen을 출력하며 반복문을 깹니다. 하지만 g..

N, M = map(int, input().split()) cards = list(map(int, input().split())) result = 0 for i in range(N): for j in range(i+1, N): for k in range(j + 1, N): if cards[i] + cards[j] + cards[k] > M: continue else: result = max(result, cards[i] + cards[j] + cards[k]) print(result) 카드를 세개를 골라야하며 모두 확인해야 하기 때문에 반복문을 3개 중첩하여 실행합니다. 중첩이 될 때마다 시작 인덱스의 범위가 1씩 늘어나는 이유는 카드가 겹치면 안되기 때문입니다. 따라서 서로다른 세장의 카드를 일일히 확..

내가 이해한 하노이 탑의 원리는 a, b, c라는 세 개의 기둥이 존재할 때 a라는 기둥에서 c라는 기둥으로 n개의 원판을 옮기기 위해서는 a와 c가 아닌 b기둥에 n-1개의 원판을 옮겨둔 뒤 a에서 c로 n번째 원판(가장 밑에 있는 원판)을 옮기고 b에서 c로 n-1개의 원판을 옮겨주면 됩니다. 따라서 남는기둥에 n-1개의 원판을 옮겨둔 뒤 가장 큰 원판을 옮기고 n-1개의 원판을 옮겨주면 될 것입니다. 물론 이 과정에서 n-1개의 원판이 1개가 아닌 이상 위의 과정을 반복해야 합니다. n-1개의 원판을 옮기기 위해서는 n-2개의 원판을 남는 기둥에 옮겨놓고 n-1번째 원판을 옮긴 뒤 n-2개의 원판을 옮겨주면 됩니다. log = [] def hanoiTower(n, a, b, c): if n == 1..

def drawStars(n): global Map if n == 3: Map[0][:3] = Map[2][:3] = [1] * 3 Map[1][:3] = [1, 0, 1] return a = n//3 drawStars(a) for i in range(3): for j in range(3): if i == 1 and j == 1: continue for k in range(a): Map[a*i+k][a*j: a*(j+1)] = Map[k][:a] N = int(input()) Map = [[0 for _ in range(N)] for _ in range(N)] drawStars(N) for i in Map: for j in i: if j: print('*', end='') else: print(" ", ..

n = int(input()) a = 0 b = 1 result = 0 for _ in range(n + 1): if _ < 2: result = _ else: result = a + b a = b b = result print(result) 피보나치 수열의 0번째와 1번째는 예외처리하여 직접 지정해줍니다. 피보나치 수열이 시작되기 위해서는 최소 2개의 수가 필요하기 때문입니다. 2번째부터는 피보나치 수열을 따라 작성했습니다. F3 = F2 + F1의 형태를 띄므로 result = a + b 입니다. 그리고 다음 결과값을 해서 b = result이고 a = b가 됩니다. n까지 반복하면 됩니다.

N = int(input()) zeroFac = 1 for _ in range(1, N + 1): zeroFac *= _ print(zeroFac) N! ( = N 팩토리얼)은 N이 하나의 자연수일 때 1부터 n까지의 모든 자연수의 곱을 의미합니다. 따라서 입력받은 수 까지의 모든 자연수를 곱해주어 출력해주면 됩니다. 여기서 주의할 점은 0! = 1 이라는 점입니다. 이는 증명을 통해 알 수 있습니다. 4! = 4 x 3 x 2 x 1 = 24 => 4! = 4 x 3! 3! = 3 x 2! = 6 2! = 2 x 1! = 2 2! = 2 x 1 x 0! = 2 1! = 1 x 0! = 1 0! = 1 위 증명을 통해 0!은 1임을 알 수 있습니다. 따라서 zeroFac을 1로 설정해준 뒤 반복문을 실행..