🐤 CodingTest/Java

[프로그래머스/Java/입문/⭕️] 배열 뒤집기 - Collections.reverse()

천재강쥐 2022. 12. 30. 14:29

 

 

 

🗣️ 메모

분명히 reverse 어쩌고 메소드가 있었는데 기억이 안 남

for문을 돌리려니 2중 포문이 돼 버리고 한 번에 2가지의 변수를 두어 돌릴 수는 없을까?

하다가 결국 구글의 힘을 빌렸고 또 까먹지 않기 위해서 정리해 둠

 

아!

그리고 프로그래머스에서 import 구문을 자동으로 인식해 주지 않으므로 직접 기재해야 함

다들 이걸로 퉁치는 것 같은 분위기이긴 한데 나중에... 먼 훗날에 고오급 문제를 풀다 보면 효율이 떨어질 수도,,,

import java.util.*

 

1) 하나의 for문에 두 가지 변수 넣기

2) for문 변수 1개로 배열 뒤집기

2) Collections.reverse 메소드

 

 

 


 

 

 

✏️ [배열 뒤집기]

문제 설명

정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.


 

제한사항

  • 1 ≤ num_list의 길이 ≤ 1,000
  • 0 ≤ num_list의 원소 ≤ 1,000

입출력 예

num_list result
[1, 2, 3, 4, 5] [5, 4, 3, 2, 1]
[1, 1, 1, 1, 1, 2] [2, 1, 1, 1, 1, 1]
[1, 0, 1, 1, 1, 3, 5] [5, 3, 1, 1, 1, 0, 1]

입출력 예 설명

입출력 예 #1

  • num_list가 [1, 2, 3, 4, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 4, 3, 2, 1]을 return합니다.

입출력 예 #2

  • num_list가 [1, 1, 1, 1, 1, 2]이므로 순서를 거꾸로 뒤집은 배열 [2, 1, 1, 1, 1, 1]을 return합니다.

입출력 예 #3

  • num_list가 [1, 0, 1, 1, 1, 3, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 3, 1, 1, 1, 0, 1]을 return합니다.

 

 

 


🔥 TRY #1

👉🏻 포문을 돌리는 것까지는 ㅇㅋ

 

👉🏻 기존 배열은 거꾸로, 새로운 배열에는 차례대로 '하나씩' 넣어 줘야 하는데 하나의 i당 모든 j를 검토하는 이중 포문은 어울리지 않음

 

 

 

 

🔥 TRY #2

🎉 [실행 결과] 하나의 for문에 두 가지 변수 넣기

 

👉🏻 하나의 for문에 변수 2개를 넣는 방법은 쉬웠다!

👉🏻 기존 for문의 문법인 초기식;조건식;증감식 에 원하는 변수를 콤마(,)로 구분하여 넣으면 끝

 

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        
        for(int i = num_list.length-1, j = 0; i >= 0; i--, j++) {
                
                answer[j] = num_list[i];
        }
        
        return answer;
    }
}

 

 

 

 

🔥 TRY #3

🎊 [실행 결과] for문 변수 1개로 배열 뒤집기

👉🏻 for문에 하나의 변수를 사용해도 가능함

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        
        for(int i = 0; i < num_list.length; i++) {
                
                answer[num_list.length - 1 - i] = num_list[i];
        }
        
        return answer;
    }
}

 

 

 

🔥 TRY #4

💫 [실행 결과] Collection.reverse() 메소드

 

 

👉🏻 Collections.reverse() 메소드 : 인자로 전달된 리스트의 요소 순서를 뒤집는 메소드

 

1) Integer[] arr = { 1, 2, 3, 4, 5 };

배열이 존재함

 

2) List<Integer> list = Arrays.asList(arr);

배열을 리스트로 변환함

이때 자료형은 Wrapper 타입으로 int가 아닌 Integer로 기재해야 함을 주의할 것!

 

3) Collections.reverse(list);

리스트를 뒤집음(순서 변환)

 

4) Integer[] reverseArr = list.toArray(arr);

순서를 뒤집은 리스트를 다시 배열로 변환하여 넣어 줌

 

 

 


출처: 프로그래머스 코딩 테스트 연습,https://school.programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr