알고리즘 16

[BOJ] 1003. 피보나치 함수 / 파이썬 풀이

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net def fib(n): p = [] num_0 = [0 for i in range(n+2)] num_1 = [0 for i in range(n+2)] p.append(0) num_0[0] = 1 p.append(1) num_1[1] = 1 for i in range(2, n+1): p.append(p[i-1] + p[i-2]) num_0[i] = num_0[i-1] + num_0[i-2] num_1[i] = num_1[i-1] + num_1[i-2] print(num_0[n], num_1[n])..

알고리즘 2022.02.07

[BOJ] 10826. 피보나치 수 4 / 파이썬 풀이

https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net def fib(n): if(n==0): return 0 elif(n==1): return 1 else: return fib(n-1) + fib(n-2) n = int(input()) print(fib(n)) 런타임 에러 (RecursionError) / 시간초과 def fib(n): p = [] p.append(0) p.append(1) for i in ra..

알고리즘 2022.02.07

선택 알고리즘 파이썬 구현

선택 알고리즘 이전 게시물 퀵 정렬 분할 알고리즘을 기본으로 함. 2021.07.29 - [알고리즘] - 퀵 정렬, 분할 알고리즘 퀵 정렬의 수행시간 분할 후 자기호출 -> 최악의 경우 O(N^2) 시간 소요 평균 선형 시간 선택 알고리즘 - 분할을 이용 - 평균 O(N), 최악의 경우 O(N^2) 시간 소요 분할 알고리즘이 리턴하는 값으로 기준원소가 전체에서 몇 번째 작은 원소인지 알 수 있다. 퀵 정렬을 필요한 부분만 해나가는 느낌 #평균 선형 시간 선택 알고리즘 select def select(a, p, r, i): if p==r: return a[p] q = partition(a, p, r) k = q-p+1 if i

알고리즘 2021.07.31

퀵 정렬, 분할 알고리즘 파이썬 구현

퀵 정렬 - 평균적으로 가장 좋은 성능을 가짐 - 현장에서 가장 많이 쓰이는 정렬 알고리즘 1. 정렬할 배열에서 기준 원소를 고른다 2. 기준 원소보다 작은 수는 왼쪽에, 큰 수는 오른쪽에 3. 기준 원소의 왼쪽과 오른쪽 부분 배열을 다시 정렬 (퀵 정렬 재귀) 파이썬 코드 구현 타입 에러 - return값이 없어서 - X - range 설정이 잘못됨 #Quik sort 퀵정렬 def quickSort(a, p, r): if p

알고리즘 2021.07.29

[SWEA] 1926. 간단한 369 게임 파이썬 풀이

SW Expert Academy - D2 1926. 간단한 369게임 N = int(input()) result = '' count = 0 for test_case in range(1, N + 1): a = list(str(test_case)) for i in a: if int(i) % 3 == 0 and int(i) != 0: count += 1 if(count==0): result += str(test_case) else: for i in range(count): result += '-' count = 0 result += ' ' print(result) pass 다른 사람 코드 참고해서 count 함수 사용 N = int(input()) result = '' for test_case in range..

알고리즘 2021.07.24

[SWEA] 1859. 백만 장자 프로젝트 파이썬 풀이

SW Expert Academy - D2 - 1859. 백만 장자 프로젝트 스택을 사용한 풀이 #1859 runtime error - 8/10 def test(a): stack = [] maxnum = 0 for i in reversed(a): if i>maxnum: stack.append(i) maxnum=i else: stack.append(0) buy = 0 count = 0 sell = 0 for i in range(len(a)): if stack.pop(): if buy != 0: sell += a[i] * count - buy buy = 0 count = 0 continue buy += a[i] count += 1 return sell T = int(input()) for i in range(..

알고리즘 2021.07.21