-
프로그래머스 - 피보나치 수알고리즘 2022. 1. 26.반응형
내 풀이 - 자바
(이건 n번째 피보나치 수를 구하는 코드)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class test01 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int f[] = new int[n+1]; for(int i=0; i<f.length; i++) { if(i==0) { f[0] = 0; } else if(i==1) { f[1] = 1; } else { f[i] = f[i-1] + f[i-2]; } } System.out.println(f[n]); } }
먼저 배열을 만듬 방 크기는 n 보다 1이 커야함 (인덱스가 0부터 시작하니까)
그리고 방 크기만큼 반복문을 도는데 만약 i가(인덱스가) 0이나 1일 경우는 0과 1로 고정임
피보나치 수 스타트 항은 0 1 이니까
그 경우가 아니면 이제는 계산식을 넣어주면 됨 그럼 n 번째 피보나치 수를 구할 수 있음.
내 풀이2 - 자바
(n 번째 피보나치 수에 1234567 % 하는 코드)
class Solution { public int solution(int n) { int answer = 0; int a = 1; int b = 1; if(n == 1 || n == 2) { return 1; } for(int i=3; i<=n; i++) { answer = (a+b) % 1234567; a = b; b = answer; } return answer; } }
이건 피보나치 수가 0 1 1 2 3 이런식으로 다음 수를 구하는 방법으로 구하는 코드
앞에 2개 항의 합이 그 다음 수가 되는걸 이용함.
피보나치 수가 1번째 2번째일 경우에는 무조건 1이 나오니까 if 조건식 걸어준다.
입력 받은 n이 2 이상일때만 계산 시작
그래서 for문에서 i가 3부터 시작함.
3부터 시작하는거면 피보나치 수는 2부터 시작하는 것 그렇다면 그 전의 항들은 각각 1일 것
그래서 변수 a,b에는 1을 미리 주고
반복문에서 2개를 합하면 그 다음 피보나치 수가 나옴
그리고 다시 변수를 재할당 해주면 반복문에 의해서 n번째 피보나치 수가 나온다.
내 풀이 - 파이썬
def solution(n): a = 0 b = 1 for i in range(n-1): c = a+b a = b b = c return c % 1234567
내 풀이2 자바랑 동일한 코드의 파이썬 버전
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 최대공약수와 최소공배수 (0) 2022.01.31 프로그래머스 - 짝수와 홀수 (0) 2022.01.30 프로그래머스 - 콜라츠 추측 (0) 2022.01.26 프로그래머스 - 평균 구하기 (0) 2022.01.26 프로그래머스 - 하샤드 수 (0) 2022.01.25