-
[JAVA] 피보나치수 출력 프로그램 만들기(배열, while 반복문)취미/코딩 2023. 9. 17. 19:06
서문
최근 자바를 배우고 있다. 언젠가 HTML과 CSS를 조금 배웠던 적이 있었는데, 안드로이드 애플리케이션을 만들어 보고 싶어서 자바를 시작했다.
생활코딩의 자바 입문수업을 들었다(https://opentutorials.org/course/1223). 유튜브와 홈페이지 강의를 병행하며 1회독을 끝냈고, 실습을 통해 내 것으로 만들고자 연습을 시작했다.실습시작
bing의 GPT4.0에 배열을 연습할 수 있는 기초 프로그램 예제를 알려달라고 했다. 검색결과 피보나치수열 만드는 프로그램이 있었다.
제목만 본 상태로, 구상하고 한 번 만들어보려고 한다.(참고한 페이지: https://m.blog.naver.com/wldks79/222143745634)
Java 기본 예제 1- 피보나치 수열 출력하기 (배열과 for문)
#java #java예제 #코딩테스트 #java코딩 #피보나치수열 #배열 #ArrayList #제네릭 #for문 Java 기본 예...
blog.naver.com
구상- 피보나치수열: 1-1-2-3-5-8-13... 중 요청한 순번의 값이 나와야 함
- ((결과)) 몇 번째 값을 출력할 건지 입력 > 해당 순서의 값이 출력됨
- 처음 1-1은 고정이다. 배열의 0번, 1번은 1, 1로 고정시킴
- 배열의 2번부터는 앞의 두 개를 더해서 출력 > 이전 값 2개를 호출해서 더한 뒤 입력시켜야 함 > 이 부분을 반복문으로 하여 배열을 만들고 출력하기구체화
- int i 값을 입력값으로 받음(Scanner)
- 피보나치수열을 담을 배열 array를 만든다. `int[] fbnc = new int[i];`
- 기본값 두 개는 직접 입력해야 함. `fbnc[0] = 1; fbnc[1] = 1;`
- 입력값 i-1 번째 배열값을 출력해야 함
- 입력값이 1이나 2면 계산할 거 없이 출력하면 됨. `if(i=1 || i=2){sout(fbnc[i])}`
- 입력값이 3 이상이면 계산을 해서 fbnc배열을 만들어 줘야 함. 배열을 만드는 산식을 만들어야 함.
- 숫자 i를 받으면, 일단 배열을 위해 index라는 변수를 하나 만들자. 헷갈리니까. int index = i-1; 지금부터 i 는 신경안쓰고, 배열의 몇 번째 값을 꺼낼지만 생각하면 된다. fbnc[index] = fbnc[index-1] + fbnc[index-2] 이다.
- 끝이네? 이렇게 해서 출력하면 되는 거 같은데?
+ 배열은 while 문을 이용하여 만들 수 있음.1차 작성
public class fbncDemo { public static void main(String[] agrs){ System.out.println("몇 번째 피보나치 수열을 원하시나요? \n 정수형태로 써 주십시오.") int request = int Scanner(System.in); int[] fbnc = new int[request]; int fbnc[0] = 1; int fbnc[1] = 1; int result = 0 if(request <= 2){ result = 1; } else { int i = 2; while(i < request){ int fbnc[i] = fbnc[i-1] + fbnc[i-2]; result = fbnc[i]; i++; } } System.out.println(result); } }
>> 1차 작성 이후 온라인 컴파일러로 돌려보고, 오류를 수정하였다.
- i 대신 request를 넣어서 식별을 용이하게 했다.
- index 변수를 만드는 게 더 헷갈릴 듯 하여 입력값인 request 변수 하나만 사용하였다.2차 작성 = 성공!!
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("몇 번째 피보나치 수열을 원하시나요? \n (정수로 써 주십시오)"); int request = sc.nextInt(); int[] fbnc = new int[request]; fbnc[0] = 1; fbnc[1] = 1; int result = 0; if(request <= 2){ result = 1; } else { int i = 2; while(i < request){ fbnc[i] = fbnc[i-1] + fbnc[i-2]; result = fbnc[i]; i++; } } System.out.println(result); } }
수정한 부분
- 세미콜론 빼먹은 게 많음
- 스캐너의 올바른 사용법을 몰랐음
- 배열에 숫자를 입력하고 출력하는 정확한 방법을 몰랐음결과
참고 블로그의 코드 리뷰
다른 사람이 어떻게 했는지 보고 올까?
(처음에는 답지를 한 번 볼까?라고 썼었는데... 내 코드도 답지가 되어버렸잖아? 후훗)
- 서로 생각한 프로그램이 달랐다. 나는 n번째 값을 가지고 오는 코드를 만든 반면, 저 사람은 n번째까지의 피보나치 수열이 출력되도록 프로그램을 만들었다.
- 프로그램 실행과 종료에 대한 질문이 들어있고, while 문을 넣어서 원하는 만큼('n'을 칠 때까지) 프로그램을 테스트할 수 있도록 만들었다.피드백
- 해보는 게 가장 빠르게 배울 수 있다!
- 커뮤니케이션이 중요하다...
- 피보나치는 F로 시작하는 게 아니라 P로 시작한다...ㅎ 다음에 또 만들게 된다면(?) pbnc로 하자.
- 프로그램 설계 단계에 오류가 있었다. 수열 0번째, 1번째에 1을 대입해 놓고, while 반복문 안에서는 요청값이 2 이하일 때 1이 나오도록 했다. `fbnc[0] = 1; fbnc[1] = 1;` 을 굳이 할 필요가 없었다.앞으로
- while문을 이용한 반복실행 코드를 만들어보자.
- 군더더기가 있기는 했지만, 일단 계속 더 만들어보자!
뿌듯.'취미 > 코딩' 카테고리의 다른 글
[JAVA] 이름 목록에서 검색한 성을 가진 사람을 출력하는 프로그램(ArrayList) (0) 2023.09.21 [CSS] Box-sizing 속성(border-box, content-box) (0) 2022.09.12 [CSS]Flexbox 속성 정리 (0) 2022.09.12