<BOJ 2748> 피보나치 수 2

pastafromvictoriadesert·2024년 2월 1일
0

BOJ

목록 보기
9/12

백준 2748번 바로가기

📌자바

파이썬에 너무 익숙해져 있다보니 배열 선언부에서부터 막혔다.

파이썬의 List만 써왔어서 자바에서도 ArrayList를 이용하려고 했지만 그럴 필요도 없는 문제여서 그냥 배열을 이용해서 풀었다.

int n = sc.nextInt();
int dp[] = new int[n+1];

배열의 선언부도 익숙치 않아서 시간이 조금 걸렸다.

심지어 이렇게 풀었는데 오답이 나와서 당황했는데, 1 입력 등의 입력 예외도 처리해 주었는데 왜 틀렸나 하고 고민을 상당히 오래했었다.

이마저도 파이썬 때문이다...

👉배열의 자료형을 int로 선언해서 90입력 시 정상적인 출력이 나오지 않았던 것.

파이썬은 integer의 범위가 정해져 있지 않아서 그냥 형 변환만 잘 해주면 됐는데, 자바는 그렇지 않았다.

int를 long 으로 바꾸어서 정답을 맞췄다.

📌피보나치 수 2

import java.io.IOException;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = sc.nextInt();
        long dp[] = new long[n+1];

        dp[0] = 0;
        dp[1] = 1;

        if (n == 1) {
            System.out.println(1);
            return;
        }
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i-2] + dp[i-1];
        }

        System.out.println(dp[n]);
    }
}

📌Long 과 long 의 차이

long은 primitive type 이다.
Long은 reference type 이다.

primitive type은 실제 메모리에 값을 저장하는 역할을 한다.
👉null 할당이 불가능하지만, Stack 영역에 값이 존재하기 때문에 메모리 관리 등 성능 측면에서 효율적이다.

reference type은 메모리 주소를 통해 객체를 참조한다.
👉null 할당이 가능하고, Stack 영역에는 참조 주소만 있고, 실제 데이터는 Heap 영역에 있기 때문에 primitive type에 비하면 덜 효율적이다.

domain에서 id값에 Long을 사용하는 이유

스프링 프레임워크 등 웹을 공부할 때,

Long id;
String Name;

등으로 선언하는 경우가 많았는데, DB의 id 값이 not null이 보장되지 않아서 이렇게 선언을 하는 것이었다!

0개의 댓글

관련 채용 정보