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] |
[차근 차근 생각해보기]
- answer 배열을 num_list의 길이에서 5을 빼주어 배열을 만들어준다.
- 그 다음 정렬을 해주는데 정렬은 아래와 같이할 수 있다.
- num_list의 길이까지 두번 반복하는데 두번째 반복문은 i + 1번째부터 시작한다.
- 만약 num_list의 i번째가 j번째보다 크다면 tmp에 num_list의 i번째를 넣어준다.
- num_list의 i번째에 j번째를 넣어주고 num_list의 j번째에 tmp에 담긴 num_list의 i번째를 넣어준다.
- answer 배열에 원소를 넣어주기 위해 index 변수를 선언하여 0으로 초기화 해준다.
- 5부터 num_list의 길이까지 돌면서 answer에 num_list의 i번째를 넣어준다.
- 이때 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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 5명씩 (0) | 2023.07.04 |
---|---|
[프로그래머스] - 배열 비교하기 (0) | 2023.06.27 |
[프로그래머스] - 배열 만들기 1 (0) | 2023.06.22 |
[프로그래머스] - n 번째 원소부터 (0) | 2023.06.19 |
[프로그래머스] - 글자 이어 붙여 문자열 만들기 (0) | 2023.06.19 |