728x90
x만큼 간격이 있는 n개의 숫자
문제설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
입출력 예
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 = {};
return answer;
}
}
문제풀이
아직까지 내가 배열을 사용하는 것이 익숙하지 않다는 것과 오류에 해결 능력이 미흡해서 잠깐 헤매긴하였으나
복잡한 문제는 아니었다.
길이 n의 long 배열 answer의 값은 각 행 당 x*n이다.
for문으로 간단하게 해결 가능하였으나, 부끄럽게도 기초적인 배열 선언에서 다소 지체되었다.
이쯤에서 다시 한 번 정리해보는 배열 선언 방법
int[] sum = new int[n]; // n은 배열 sum의 길이
추가로 배열을 할당하는 방법은
sum[0] = 1; // 배열 0번째 index에 값 1 할당
sum[1] = 2; // 배열 1번째 index에 값 2 할당
...
정말 간단하다. 매번 까먹는다는 사실이 부끄러울 따름이다. 이번 실수를 끝으로 제발 잊어버리지 말길
그 후 for문을 사용하여 아래와 같이 코드를 작성하였고 문제 해결을 완료한줄 알았으나 끝에 가서 오류가 발생하였다.
class Solution {
public long[] solution(int x, int n) {
long[] solution = new long[n];
for(int i = 0; i < solution.length; i++){
solution[i] += x*(i+1);
}
System.out.println(solution);
return solution;
}
}
문제의 원인은 배열 solution의 i번째 index 값을 할당해주는 부분
solution[i] += x*(i+1);
이었다.
배열 solution은 long 배열이었으나 x와 n은 int로 선언되어있었기에 둘 중 하나라도 (long)으로 타입을 바꿔주는 것으로
해결 가능하였다.
Solution.java
class Solution {
public long[] solution(int x, int n) {
long[] solution = new long[n];
for(int i = 0; i < solution.length; i++){
solution[i] += (long)x*(i+1);
}
System.out.println(solution);
return solution;
}
}
728x90
'🤖Algorithm' 카테고리의 다른 글
[프로그래머스] 내적 Java (0) | 2022.07.18 |
---|---|
[프로그래머스] 부족한 금액 계산하기 Java (0) | 2022.07.18 |
[프로그래머스] 행렬의 덧셈 Java (0) | 2022.07.18 |
[프로그래머스] 핸드폰 번호 가리기 Java (0) | 2022.07.18 |
[프로그래머스] 없는 숫자 더하기 Java (0) | 2022.07.16 |