MEMO

📌 코딩 테스트에서 변수 타입 선택하는 법 (int, double, long 언제 쓸까?)

j1ngerhead 2025. 3. 5. 22:55

 

코딩 테스트에서 변수를 선언할 때 어떤 타입을 선택해야 할지 초초보인 나는

냅다 int로만 사용하다가 틀려서 보면 long으로 바꿔야 했거나 하는 경우가 종종 있었다.

(잘못된 타입을 선택하면 오버플로우나 부동소수점 오류가 발생할 수 있다.)

기준 메모해두기!

코딩 테스트에서 문제를 읽을 때 값의 범위와 연산을 먼저 확인하면 변수 타입을 쉽게 결정할 수 있다.

 

🔎 int (기본적으로 사용)

범위: -2,147,483,648 ~ 2,147,483,647 (약 21억)
사용 예시:

  • 단순 카운트, 인덱스, 개수 (N, count)
  • 21억 이하의 합이나 연산 (score, sum)

 

🔎 double (소수 계산 필요할 때)

사용 예시:

  • 나눗셈 연산이 필요한 경우 (평균, 비율)
  • 정수 나눗셈에서 오차를 방지하고 싶을 때

📌 예제:
❌ int 사용 시: 50 / 70 = 0 (정수 나눗셈)
✅ double 사용 시: 50.0 / 70 = 0.7142857 (실수 계산)

 

 

🔎 long (21억 초과할 때)

범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
사용 예시:

  • 숫자가 21억 이상이 될 가능성이 있는 경우 (큰 수의 합, 팩토리얼 값)

📌 예제:
❌ int sum = 2,000,000,000 + 1,000,000,000; // 오버플로우 발생!
✅ long sum = 2_000_000_000L + 1_000_000_000L; // 정상 동작

 


 

풀었던 문제 중에서 평균을 구하는 문제 조건을 예로 들어 보면
과목 개수 N≤1000
각 점수 그리고 난 sum 변수를 사용했는데 

👉 sum의 최대값은 100 × 1000 = 100,000
👉 10만을 넘지 않으므로 int로 충분
👉 long을 쓸 필요 없음!

이런 식으로 최대 범위를 예측하면 불필요한 long 사용을 피할 수 있음

불필요하게 long을 쓸 필요가 없는 이유 → 메모리를 더 차지한다.
 

🔎 int vs long 메모리 차이

  • int → 4바이트(32비트)
  • long → 8바이트(64비트)

즉, long을 쓰면 2배의 메모리를 사용함.
큰 숫자가 필요하지 않은데 long을 쓰면 메모리를 낭비하는 셈!

 

🔎 왜 메모리 절약이 중요할까?

1️⃣ 배열 사용 시 낭비 심화

  • int[1_000_000] → 약 4MB 사용
  • long[1_000_000] → 약 8MB 사용 (2배 차이!)

2️⃣ 캐시 최적화 문제

  • CPU가 int보다 long을 다룰 때 메모리 접근이 더 많아져 속도 저하 가능성

 

💡 결론

21억 이하의 정수 연산은 int 사용!
불필요한 long 사용은 메모리 낭비!

나눗셈/소수점이 필요 → double
큰 숫자가 필요할 때만 long 사용!

 

320x100

'MEMO' 카테고리의 다른 글

노션 공유 링크 단축하기  (1) 2024.09.20
꾸준히  (1) 2024.09.17
git 명령어  (0) 2024.09.17
인텔리제이 단축키  (0) 2024.09.17
velog → 티스토리 이사  (0) 2024.09.15