일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- EC2
- Spring
- git
- QueryDSL
- aws
- springboot
- 알고리즘
- Github
- java
- CodeDeploy
- redis
- string
- workflow
- AOP
- mutable
- Action
- rds
- immutable
- JPA
- db
- 토비의 스프링
- kotlin
- 사이드 프로젝트
- JUnit
- compiler
- build_test
- template
- Airflow
Archives
- Today
- Total
개발 일기
프로그래머스 레벨2 피보나치의 수 (JAVA) 본문
프로그래머스 레벨2 피보나치의 수를 풀었다..
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
모든 코드는 GitHub 에 올려놓았다.
문제는 어렵지 않다..
근데 %로 나눌 때 내가 실수로 1234567을 써야 하는데
124567로 잘못 적어서 시간이 소요된 거 말곤..
풀이는 2개가 있다..
일단 재귀..
class Solution {
public int solution(int n) {
return recursive(0,1, n);
}
public int recursive(int f1, int f2 , int n ) {
int f = (f1 + f2) % 1234567;
if(n == 2) {
return f;
}
return recursive(f2, f, n -1);
}
}
두 번째 풀이
class Solution {
public int solution(int n) {
int[] fArr = new int[n + 1];
fArr[0] = 0; // F(0) = 0;
fArr[1] = 1; // F(1) = 1;
for(int i=2; i<fArr.length; i++) {
fArr[i] = (fArr[i -1] + fArr[i - 2]) % 1234567;
}
return fArr[n];
}
}
크게 어려운 문제는 아니었다..
'알고리즘 > programmers' 카테고리의 다른 글
프로그래머스 레벨3 가장 먼 노드 (JAVA) (0) | 2021.07.20 |
---|---|
프로그래머스 레벨2 게임 맵 최단거리 (0) | 2021.07.20 |
프로그래머스 레벨2 다음 큰 숫자 (JAVA) (0) | 2021.07.20 |
프로그래머스 레벨2 카카오프렌즈 컬러링북 (JAVA) (DFS) (0) | 2021.07.18 |
프로그래머스 레벨3 네트워크 (JAVA) (DFS,BFS) (0) | 2021.07.18 |