728x90

[문제 설명]

정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list result
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10] [15, 32, 38, 46, 56]

 

[차근 차근 생각해보기]

  1. answer 배열을 num_list의 길이에서  5을 빼주어 배열을 만들어준다.
  2. 그 다음 정렬을 해주는데 정렬은 아래와 같이할 수 있다.
  3. num_list의 길이까지 두번 반복하는데 두번째 반복문은 i + 1번째부터 시작한다.
  4. 만약 num_list의 i번째가 j번째보다 크다면 tmp에 num_list의 i번째를 넣어준다.
  5. num_list의 i번째에 j번째를 넣어주고 num_list의 j번째에 tmp에 담긴 num_list의 i번째를 넣어준다.
  6. answer 배열에 원소를 넣어주기 위해 index 변수를 선언하여 0으로 초기화 해준다.
  7. 5부터 num_list의 길이까지 돌면서 answer에 num_list의 i번째를 넣어준다.
  8. 이때 index는 ++를 하여 반복문이 돌면 1 증가하도록 한다.

[코드]

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

 

[반성할 점]

배열 정렬의 원리를 이해하기 위해 for문으로 직접 만들어보았다.

tmp 변수에 더 큰 값을 넣어주고 큰 값이 있던 자리에 작은 값을 넣어준다.

그 다음 작은 값이 있던 자리에 tmp에 담은 값을 넣어준다.

 

처음에 위의 코드를 다른 블로그에서 보고 따라 쳤는데 이해하는데 조금 오래 걸렸다.

무작정 모른다고 블로그 본 것이 조금 후회된다..ㅠㅠ

앞으로는 조금 더 사고해본 뒤 정 안될때 인터넷을 찾아보아야겠다.    

 

다 만들어 놓고 배열의 인덱스는 0부터 시작하는데 answer 배열에 원소를 넣는 방법을 몰라 또 헤맸다.

생각해보니 변수 선언을 해놓고 증감식을 사용하면 되는 것이었다..멍충멍충..😓

 

마음이 점점 급해져서 그런지 빨리 풀어야겠다는 강박이 다시 나오기시작했다..

이럴 때 일수록 천천히 해야하는데 다시 마음 잡고 천천히 꾸준히 해보자..!  

728x90

+ Recent posts