코드스테이츠 Day35
오늘 문제는 bubble sort였는데, 재귀함수로 해보려다가 실패했다.
꽤 오래 고민함.
결국 구글링으로 버블 정렬 방법을 검색해서 풀었다.
https://st-lab.tistory.com/195
시간 복잡도를 낮추기위한 count 추가는 문제에서 제공된 힌트를 토대로 스스로 생각하여 추가했다.
밑에는 차례로 성공한 코드와 실패한 코드.
public class Solution {
public int[] bubbleSort(int[] arr) {
int count =0;
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr.length-1; j++){
if(arr[j]>arr[j+1]){
int num = arr[j];
arr[j]=arr[j+1];
arr[j+1]=num;
count++;
}
}
if(count == 0) return arr; // 이미 정렬되어 바뀌는 게 없으면
}
return arr;
}
}
//망한 코드.. 재귀함수 쓰려다가 포기.
int[] result = Arrays.copyOfRange(arr, 0, arr.length); // 5 4 3 2 1
for(int i=0; i<arr.length-2; i++){
if(arr[i]>arr[i+1]){
result[i]=arr[i+1];
result[i+1]=arr[i];
bubbleSort(result); // 4 5 3 2 1
}
if(arr[i]<=arr[i+1] && i==arr.length-2) return arr;
}
return arr;
<느낀 점>
오전 데일리 코딩 너무 어렵게 생각했던 것 같다.
나는 조금 복잡하게 생각하는 경향이 있는데, 로직을 단순 명료하게 생각하는 연습이 필요할 것 같다.
하지만 다양한 방법을 구상한다는 점은 셀프 칭찬함.
오늘은 아키텍처와 스프링 부트에 관한 내용을 학습했다.
스프링 프레임워크에서 가장 중요한 것은 IoC/DI 라고 들었는데, 내일부터는 이에 대해 중점적으로 학습한다. 차근히 해보자. 하다보면 익숙해지겠지.