정수 start와 end가 주어질 때, start부터 end까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
start | end | result |
---|---|---|
3 | 10 | [3, 4, 5, 6, 7, 8, 9, 10] |
할것도 없지만..^^~
1. 반복문으로 start 부터 end 까지 담자.
2. int[] 을 end - start + 1 의 크기로 초기화 해준다
3. 반복문으로 int 배열에 담아준다
class Solution {
public int[] solution(int start, int end) {
int[] answer = new int[(end - start) + 1];
for (int i= start; i <= end; i++) {
answer[i - start] = i;
}
return answer;
}
}
배열과 리스트에 대해서 애매하게 알고있었던 것 같다!
1. 배열은 초기에 크기를 꼭 지정해줘야한다
int[] answer = new int[n];
대충 ArrayList에 담아서 또 for문으로 배열에 담아주려고 했는데 너무 귀찮았다!
정확히 크기를 알 수 있다면 앞으로는 지정하고 바로 담아줘야지!
2. 배열의 인덱스 값은 0부터 ^^
너무 습관적으로 i = 0 이라 생각해서
for (int i= start; i <= end; i++) {
answer[i] = i;
}
이렇게 썼다.
하지만 내가 배열의 초기값을
int[] answer = new int[(end - start) + 1];
이렇게 셋팅했기때문에 [i] 가 없는 인덱스 값이 될 수도 있다!!!
다른사람 풀이를 보다가 완전 심플한 코드를 발견...
이거 뭐야 뭔데
for문 실행이랑 같은 작업하는 메소드 발견~!
Public int[] solution(int start, int end) {
return IntStream.rangeClosed(start, end).toArray();
}
.rangeClosed(start, end)
Returns a sequential ordered IntStream from startInclusive (inclusive) to endInclusive (inclusive) by an incremental step of 1.
매개변수:
startInclusive – the (inclusive) initial value endInclusive – the inclusive upper bound
반환:
a sequential IntStream for the range of int elements
API 참고 사항:
An equivalent sequence of increasing values can be produced sequentially using a for loop as follows:
public static IntStream rangeClosed(int startInclusive, int endInclusive) {
if (startInclusive > endInclusive) {
return empty();
} else {
return StreamSupport.intStream(
new Streams.RangeIntSpliterator(startInclusive, endInclusive, true), false);
}
}