문제
함수 solution은 정수 x와 자연수 n을 입력받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 사항
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
결괏값 예시
x | n | return |
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 = {};
return answer;
}
}
풀이 [Java]
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for (int i=0; i<n; i++) {
answer[i] = (i+1)*x;
}
return answer;
}
}
아주 간단한 알고리즘 문제로 볼 수 있습니다.
차근차근 처음부터 설명을 해보자면, 기본 제공 틀에서 long [] answer = {};이라고 선언이 되어 있었는데, 우선 배열에 대한 선언이 필요해 보이네요.
우리는 x=2, n=5라는 값이 들어왔을 때, 길이가 5인 배열이 선언이 되어야 합니다.
그렇기 때문에 위에서 보다시피, long [] answer = new long [n];으로 n이라는 길이의 배열 answer를 선언해주었습니다.
자, 배열의 길이를 선언하였으니, 이제 배열에 들어갈 숫자들을 찍어내는 알고리즘이 필요할 것 같은데요.
첫 번째 예상 결과 값을 다시 한번 보자면, x=2, n=5 인 경우, 결과는 [2,4,6,8,10]가 도출되어야 합니다.
**저는 늘 for문을 돌릴 때 초기값을 0으로 설정하는 버릇이 있어서 위와 같이 풀어보았는데요.
초기값 i=1로 지정해도 문제가 없다는 점을 유의해주시고 아래 설명을 읽어주세요
값을 1로 지정했을 때 나와야 하는 풀이도 밑에 설명을 해놓았습니다 :D
이는 쉽게 말해 [2x1, 2x2, 2x3, 2x4, 2x5]로 볼 수 있는데, 이를 조금 수식으로 표현을 해보자면, [x*1, x*2, x*3, x*4, x*5]로 볼 수 있겠네요!
저는 i=0으로 설정을 하여, x*1에서 1을 (i+1)로 표현했는데, 이는 쉽게 x*i로도 표현이 가능합니다!
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for (int i=1; i<=n; i++) {
answer[i-1] = i*x;
}
return answer;
}
}
그러려면, 위와 같이, answer의 인덱스를 지정할 때 i-1로 표현하여, answer [0]부터 값을 지정해 줄 수 있도록 해야겠죠?
또한, i < n이 아닌, i <= n으로 지정하여, 1부터 5까지의 인덱스를 표현해 줄 수 있도록 해야 하는 것도 잊지 말아야 할 포인트입니다!
채점 결과 [Java]
오늘 하루도 알고리즘 공부하느라 수고많으셨습니다!
혹시 제가 틀렸거나 부족한 점이 있다면, 댓글을 달아주세요 :D
댓글