프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
함수 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
댓글