자두의 데브로그

[자바] 프로그래머스 x만큼 간격이 있는 n개의 숫자 int vs. long 본문

코딩테스트/문제 풀이

[자바] 프로그래머스 x만큼 간격이 있는 n개의 숫자 int vs. long

왕자두 2024. 9. 27. 22:57

https://school.programmers.co.kr/learn/courses/30/lessons/12954

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

굉장히 쉬운 문젠데 어이 없게 틀렸다.

 

일단 int와 long 차이를... 확실히 하고 넘어가자 ^^

 

int 타입은 32bit로 정수를 나타내는 자료형이다. 범위는 -2147483648 ~ 2147483647

 

long 타입은 64bit로 정수를 나타내긴 하지만 더 많은 범위를 포함하고 있는 자료형이다. 범위는  -9223372036854775808 ~ 9223372036854775807 로 어마어마하게 크다. 근데 그만큼 메모리 많이 차지하고 속도도 느리다.

 

이 문제에서는 최대로 구해질 수 있는 수가 x * n 으로 -10000000 * 1000 <= x * n <= 10000000 * 1000 으로 int를 넘어서는 숫자도 구해야한다. 그렇기 때문에 애초에 x를 long으로 받던가 아니면 answer 배열에 저장할 때 long으로 형변환하던가 둘 중 한 가지 방식을 사용하면 된다.

 

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];
        for(int i = 1; i <= n; i++){
            answer[i-1] = (long)x * i;
        }
        return answer;
    }
}