본문 바로가기
개발/개발 공부

[프로그래머스] 코딩테스트 입문 : 배열 뒤집기

by 하모예 2024. 9. 2.

| 문제

정수가 들어 있는 배열 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

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

| 풀이 2

public List<Integer> solution02(int[] num_list) {
    List<Integer> list = new ArrayList<Integer>();
    for(int num : num_list) {
        list.add(num);
    }
    Collections.reverse(list);
    return list;
}

| 해설

배열 그 자체로 순서를 바꾸는 방법(풀이 1), 컬렉션을 사용하는 방법(풀이 2)을 모두 써봤습니다.

이미 아시겠지만 컬렉션을 사용하면 상대적으로 시간이 많이 소요됩니다. 4개의 테스트 케이스 모두가 작게는 2배에서 많게는 4배 정도 오래 걸렸습니다.항상 말씀드리지만 배열로 주어진 문제는 배열로 해결할 수 있어야 하고,배열로 해결한 다음 컬렉션으로도 해결할 수 있어야 합니다. 반대로 컬렉션으로 얼래 벌래 해결하고 배열로도 해결하려고 시도해 보시면 절대 안 됩니다.

댓글