본문 바로가기

Coding Test

(CodingTest) : 4일차 배열 뒤집기2 (3-2)

00:50

# 문제에 있는건 아니지만, 배열 안에서 비교하는 법 알아보기 위해,

   예시로 문제 만들어봄

 

# 모르거나 헷갈렸던 부분

- 큰 숫자가 앞으로 오게 하려면?

   정수형 배열에서 [1,3,2,5,4] -->  [5,4,3, 2,1] 이렇게 위치 변경해보기

 

1. for문은 배열의 길이보다 -1만큼 작아야 함(a,b,c,d,e)인 경우 // i < n-1;

   첫번째 값 vs 두번째 값

   두번째 값 vs 세번째 값

   세번째 값 vs 네번째 값

   네번째 값 vs 다섯번째 값

   이렇게 비교하기 때문에.

 

2. 값 순서 변경 --- > [ i + 1 ] 의 값이 [ i ] 값보다 크다면, [1,3,2,5,4]

    1) i 는 새로운 변수에 담아뒀다가, i+1위치에 다시 넣어주기

    2) i+1은 i에 넣어주기

   

class Solution {
    public int[] solution(int[] num_list) {
  
        //만약에 단순히 위치만 바꾸는게 아니라, 값을 비교하면서 가장 내림차순으로 정렬하려면?
        //예_ [1,3,2,5,4] --> [5,4,3, 2,1]처럼 바꾸려면?
        
        int n = num_list.length; // 길이 n은 5
        
        for(int i = 0; i < n-1; i++){
            for(int j = 0; j < n-1-i; j++){
                if(num_list[j+1] > num_list[j]){
                    int low = 0;
          
                    low = num_list[j]; // 1은 low변수에 담아두기
                    num_list[j] = num_list[j+1]; // num_list[1]인 3을 num_list[0]에 넣기
                    num_list[j+1] = low; // num_list[i+1] 위치 부분에 기존 num_list[i]였던 1을 넣어주기.
               // j=0일 때     
               //1번째 [3,1,2,5,4]
               //2번째 [3,2,1,5,4]
               //3번째 [3,2,5,1,4]
               //4번째 [3,2,5,4,1]
                    
               // j=1일 때     
               //1번째 [3,2,5,4,1] // 변경 x
               //2번째 [3,5,2,4,1] // 5,2변경
               //3번째 [3,5,4,2,1] // 2,4 변경
               //4번째 [3,5,4,2,1] // 변경 x
                                     
                }            
            }        
        }

        return num_list;
    }
}