목록알고리즘/인프런 - Java알고리즘 입문 (65)
개발자는 기록이 답이다
7. 조합의 경우수(메모이제이션) 예시 입력 1 5 3 예시 출력 1 10 예시 입력 2 33 19 예시 출력 2 818809200 강의 풀이(Time: 153ms Memory: 27MB) 먼저 nCr에 대해 이해보자 nCr : n개 중에 r개를 뽑는다는 의미이다 종이에는 지우고 썼다가 불편해서 블랙보드로 샀더니 비치는건 양해부탁드립니다.. {1,2,3,4,5}라는 배열처럼 5명의 학생이 있는데, 5번 학생을 뽑을 경우와 안뽑을 경우로 DFS를 접근하면 된다 아래처럼만 해도 nCr을 구할 수 있긴하지만, 입력값이 크다면 재귀를 많이 뻗기 때문에 오래 걸릴 것이다. 그래서 메모이제이션이 필요하다 // 메모이제이션 X import java.util.Scanner; public class Main { publ..
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 ..