Python37 피보나치 함수 구현 방법 피보나치 함수는 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수다. 재귀함수로 구현하는 예시가 많다. 내가 구현한 재귀함수의 피보나치는 def fibo(n): if n==0: return 0 elif n==1: return 1 return fibo(n-1)+fibo(n-2) print(fibo(6)) #출력:8 이렇게 되는데 가끔 효율성이 떨어져서 알고리즘 문제를 풀면 실패할 때가 있다. 따라서 재귀함수 대신 def fibo(a): x,y=0,1 for i in range(a): x,y=y,x+y return x print(fibo(6)) #출력값 : 8 을 썼더니 같은 코드여도 성공했다,,! 아니면 내가 재귀함수를 .. 2020. 5. 30. 피보나치 수 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr def fibo(a): //피보나치 수 구하는 함수 x,y=0,1 for i in range(a): x,y=y,x+y return x def solution(n): //문제 .. 2020. 5. 30. 주식가격 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr def solution(prices): answer = [0]*(len(prices)) for i in range(len(prices)): for j in range(i,len(prices)-1): if prices[i] 2020. 5. 30. 행렬의 덧셈 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12950 코딩테스트 연습 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요 programmers.co.kr def solution(arr1, arr2): answer=[] for i in range(len(arr1)): result=[] for j in range(len(arr1[i])): result.append(arr1[i][j]+arr2[i][j]) answer.append(result) return answer 배열.. 2020. 5. 30. 하샤드 수 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하� programmers.co.kr def solution(x): a=str(x) a=list(map(int, a)) if not x%sum(a): return True else: return False 입력값을 str로 바꿔준 후 list로 한 자리씩 나눈다. 그 후 하샤드 수 조건에 맞게 부울값을 반환해주면 된다! 2020. 5. 30. 10828번 스택 문제 출처 : https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net import sys N=int(input()) result=[] for i in range(N): M=sys.stdin.readline().split() if M[0]=='push': result.append(M[1]) elif M[0]=='top': if len(result)!=0: print(result[-1]) else: print(-1) elif M[0].. 2020. 5. 30. 2751번 수 정렬하기2 문제 출처 : https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net import sys N=int(input()) M=[] for i in range(N): M.append(int(sys.stdin.readline())) M.sort() for i in M: print(i) 이전 포스팅에서 말했던 sys를 사용했다! 2020. 5. 30. 2750번 수 정렬하기 문제 출처 : https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net N=int(input()) M=[] for i in range(N): M.append(int(input())) M.sort() for i in M: print(i) 간단한 정렬문제인데 일반적인 input()보다는 sys.stdin.readline()이 시간적으로 더 빠를것이다..! 2020. 5. 30. 1920번 수 찾기 문제 출처 : https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안�� www.acmicpc.net 처음에 시간초과 난 코드 N=int(input()) n=list(map(int, input().split())) M=int(input()) m=list(map(int, input().split())) result=[] for i in m: if i in n: result.append(1) else: result.append(0) for i.. 2020. 5. 24. 이전 1 2 3 4 5 다음