[프로그래머스] x만큼 간격이 있는 n개의 숫자-JAVA

말하는 감자·2022년 5월 9일
0

Programmers Level 1

목록 보기
2/66
post-thumbnail

프로그래머스 Level 1

🔒 x만큼 간격이 있는 n개의 숫자

📚 문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.


✅ 제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

📖 입출력 예

xnanswer
25[2,4,6,8,10]
43[4,8,12]
-42[-4, -8]

🔨 첫번째 작성 코드

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

        return answer;
    }
}

이렇게 작성하니깐 3개중 1개 성공!
으잉? 무슨일이야 싶어서 보니

x += x를 하므로서 x만큼 증가하는 게 아니라 이전 값의 두배를 하고 있었다.
바보같은 감자! 🤪


🗝️ 두번째 작성 코드

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

        return answer;
    }
}

answer의 0번째에 미리 x라고 선언을 해준 뒤 for문을 실행하였다.
for문에서는 i가 1부터 시작하며 (0번째는 이미 x로 지정을 했으므로 1번째부터 시작) answer의 i번째에 i-1번째의 값 + x를 넣어준다.
그렇다면 i번째 값은 i-1보다 x만큼 차이가 난다!

사실 long으로 형변환을 안해줘도 실행은 되겠지만 기분상 넣어줬다!

크윽~ 😎


😅 느낀 점

처음 코드에 answer가

long[] answer = {};

로 선언되어 있어서 동공지진...
길이가 0인 배열이라서 for문을 돌려 배열에 값이 추가가 안되고 에러가 떴었다.

조금 더 차분하게 생각하고 코드를 작성하는 습관을 길러야겠다.

profile
나는 말하는 감자다

2개의 댓글

comment-user-thumbnail
2022년 9월 3일

x를 long으로 형변환 해주는 이유 알 수 있을까요 ??

1개의 답글