반복문 : 카운트 업

2dean·2023년 6월 10일
0

Algorithm

목록 보기
7/17
post-thumbnail

문제

정수 start와 end가 주어질 때, start부터 end까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

입출력 예

startendresult
310[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);
        }
    }
profile
냅다 써보는 공부의 흔적😇

0개의 댓글