문제 설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
Step1. 문제분석
우선 x의 값과 n의 값을 보자
2,4,6,8,10 이런식으로 즉 반복문을 통해 *(i+1) 이런식으로 배열마다 돌아서 넣으면 된다고 생각했다.
그리고 처음에 이렇게 값이 주어졌다.
class Solution {
public long[] solution(int x, int n) {
long[] answer = {};
return answer;
}
}
배열에 대한 선언이 필요하다.
그렇기에 n의 값이 숫자의 갯수니까 new long[n] 으로 배열을 선언해준다.
그리고 아까 말한대로 for문으로 n번만큼 돌고 그 값을 배열에 넣어준다.
Step2. 문제풀이 코드
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*(i+1);
}
return answer;
}
}
문제를 풀었는데 answer[i] = x * ( i-1 ) 이렇게만 넣었다.
테스트 코드를 실행했을때는 잘 진행이 되서 성공이라 생각했는데 마지막 부분에서 오류가 났다.
※문제에서 -10,000,000 <= x <= 10,000,000 이고,
int형 변수의 범위는 -2,147,483,648 ~ 2,147,483,647 이다.
따라서 가령,
x = 10,000,000, n = 1,000 이라면
x * (i + 1) = 10,000,000 * 1,000 = 10,000,000,000 와 같이 int형 범위를 초과하게 된다.
그렇기에 long타입으로 변환을 해주는 작업이 필요했다.
Step3. 다른 사람의 풀이 코드
class Solution {
public long[] solution(long x, int n) {
long[] answer = new long[n];
for(int i = 0; i < n; i++){
answer[i] = x * (i + 1);
}
return answer;
}
}
처음부터 x를 long 타입으로 선언하고 작업을 진행해도 된다.
참 간단한 생각의 차이부터 시작인것같다.
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스/알고리즘] 나누어 떨어지는 숫자 배열 (자바/Java) (0) | 2022.11.19 |
---|---|
[프로그래머스/알고리즘] 부족한 금액 계산하기 (자바/Java) (0) | 2022.11.19 |
[프로그래머스/알고리즘] 행렬의 덧셈 (자바/Java) (0) | 2022.11.19 |
[프로그래머스/알고리즘] 핸드폰 번호 가리기 (자바/Java) (0) | 2022.11.18 |
[프로그래머스/알고리즘] 평균 구하기 (자바/Java) (0) | 2022.11.18 |
댓글