프로그래머스 Level 1
🔒 x만큼 간격이 있는 n개의 숫자
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
x | n | answer |
---|---|---|
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-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문을 돌려 배열에 값이 추가가 안되고 에러가 떴었다.
조금 더 차분하게 생각하고 코드를 작성하는 습관을 길러야겠다.
x를 long으로 형변환 해주는 이유 알 수 있을까요 ??