목록자료구조 (97)
개발자는 기록이 답이다

8. 이분검색 예시 입력 1 8 32 23 87 65 12 57 32 99 81 예시 출력 1 3 arr이라는 1차원 배열에 입력값들을 받았고, 받은 다음 Array.soft()를 통해 오름차순 정렬한 상황입니다. 정렬된 상황에서 m인 32가 어디있는가를 찾는 것입니다. 0번인덱스가 첫번째라 인덱스+1해서 32번은 2번째 인덱스이자, 3번째에 있다라고 할 수 있습니다. 이분검색은 무조건 정렬이 되어있어야 합니다. 오름차순이던 내림차순이던 정렬되어있는 상황에서만 통하는게 이분검색입니다. 앞에서부터 하나하나씩 보는건 순차검색입니다. 순차검색으로 제일 뒤에 있는 99를 찾으려면 O(n)시간복잡도가 걸립니다. 이분검색은맨 왼쪽을 가르키는 lt를 0으로 초기화, rt는 n-1로 시작합니다. 그리고 lt와 rt의 ..

7. 좌표 정렬(compareTo) x 좌표 값에 의해 오름차순 정렬하고, x값이 같으면 y값에 의해 오름차순 정렬해서 출력하면 되는 문제 예시 입력 1 5 2 7 1 3 1 2 2 5 3 6 예시 출력 1 1 2 1 3 2 5 2 7 3 6 아래 코드에 대한 설명 if(this.x==o.x) return this.y-o.y; 오름차순의 경우 : this - object 내림차순의 경우 : object - this 오름차순으로 만들고자할때 현재 메소드를 호출한 this객체가 앞에있고 매개변수로 넘어온 object객체가 뒤에 있다고 생각해라. 이 순서대로 정렬이 되려면 무조건 음수값이 리턴되도록 해야 합니다. 다시말해서 this가 앞에 있고 대상객체가 뒤에 있게 하고, 10 20 이 순서대로 있게 하려면,..

6. 장난꾸러기 예시 입력 1 9 120 125 152 130 135 135 143 127 160 예시 출력 1 3 8 힌트 출력해설 : 키 정보 152가 철수이고, 127이 철수 짝꿍입니다. 나는 해당 문제를 선택정렬해서 어렵게 풀려고 했었다....그냥 깊은 복사해서 비교하면될 것을.... 강의 풀이(Time: 170ms Memory: 27MB Lang: Java) import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public ArrayList solution(int n, int[] arr) { ArrayList answer = new ArrayList(); int[] tmp ..

5. 중복 확인 예시 입력 1 8 20 25 52 30 39 33 43 33 예시 출력 1 D 내가 푼 풀이 1 (Time: 790ms Memory: 34MB) 나는 정렬도 HashMap도 안쓰고 그냥 간단하게 풀었다. 시간복잡도가 O(n^2)이다. 하지만 지금 정렬파트를 보고 있으니 정렬로도 연습을 해야 한다. import java.util.Scanner; public class Main { public String solution(int n, int[] arr) { String answer = "U"; for (int i = 0; i < n-1 ; i++) { int tmp = arr[i]; for (int j = i+1; j < n ; j++) { if (tmp == arr[j]) return "D..