문제 설명
함수 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] |
※ 제한조건을 잘 읽어보자!
정수 x와 자연수 n을 입력 받아 x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야하는 문제!
2와 5를 파라미터로 넘겨준다면, 2부터 시작해 2씩 증가하는 5개의 숫자 리스트를 리턴하면 된다.
어? 너무 쉬운 거 아니야? 하면서 풀다가 큰 코 오지게 다쳤다..
첫 해답이다.. ㅠ.ㅠ
public static long[] solution(int x, int n) {
// 결과를 출력할 long 변수
long[] answer = new long[n];
int multiple = x;
int variable = 1;
for (int i = 0; i < n; i++) {
answer[i] = multiple * variable;
variable++;
}
// 결과 출력
return answer;
}
위와 같이 작성하고 제출하였는데, 1번부터 12번 테스트케이스는 모두 통과하였지만, 13번 14번 테스트 케이스 문제에서 오류가 발생하였다. 한참을 고민하다가 뭔가 잘못됐나? 테스트 케이스가 잘못된건가? 생각하며 프로그래머스 질문하기 게시판을 뒤져봤다.
그러던 중 다른 고수분께서 해답을 남겨주셨다.
int의 최대 표현범위는 약 -21억 ~ 약 +21억인데, 테스트케이스 13, 14번의 문제는 위 값을 초과하여 오류가 발생했을 것, 또한 int형과 int형을 연산하게 되면 결과도 int형으로 반환된다는 꿀팁까지 주셨다.
그러니 int x를 long 타입으로 표현하여 문제를 풀면 된다는 것이었다. 수정하여 바로 진행하였더니 마아아아법처럼 모든 테스트케이스가 통과되었다.
항상 프로그래머스 문제를 풀면서 생각하는건데 문제 설명이나 제한 조건을 잘 읽고 문제를 풀어야한다는 점을 오늘 또 깨달았다.
레벨 1 문제라고 얕보고 접근했다가 되려 많은 생각을 하게 됐다..!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/021.gif)
아래는 해답!
package list;
import java.util.Arrays;
public class Programmers_XspaceN_Number {
public static long[] solution(long x, int n) {
// 결과를 출력할 long 변수
long[] answer = new long[n];
// long 타입이 int 타입보다 더 많은 수를 담을 수 있기 때문에
// int 와 int 를 연산했을 때 반환되는 타입도 int기 때문에
long multiple = x;
int variable = 1;
// n으로 넘어온 숫자만큼 반복문 실행
for (int i = 0; i < n; i++) {
// answer 배열에 x와 variable(1씩 증가)를 곱해 넣는다
answer[i] = multiple * variable;
// 다음 x만큼 증가시키기위해 증가
variable++;
}
// 결과 출력
return answer;
}
public static void main(String[] args) {
// 파라미터
long[] result = solution(2, 5);
// 솔루션 값 출력
System.out.print(Arrays.toString(result));
}
}
그리고 정답
히히
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif)
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스 | Programmers] 코딩테스트 연습 문제 Level 1 Java 부족한 금액 계산하기 해답 (0) | 2022.02.23 |
---|---|
[프로그래머스 | Programmers] 코딩테스트 연습 문제 Level 1 Java 핸드폰 번호 가리기 해답 (0) | 2022.02.22 |
[프로그래머스 | Programmers] 코딩테스트 연습 문제 Level 1 Java 월간 코드 챌린지 시즌3 나머지가 1이 되는 수 찾기 해답 (0) | 2021.10.24 |
[프로그래머스 | Programmers] 코딩테스트 연습 문제 Level 1 Java 완주하지 못한 선수 문제풀이 (0) | 2021.10.23 |
[Programmers] Java 프로그래머스 연습문제 약수의 합 문제 풀이 (0) | 2021.10.14 |