분류 전체보기
패스트캠퍼스 챌린지 15일차
시청 날짜 : 11/15/2021 시청 강의 : 투포인터(Two Pointers) Two Pointers 투포인터 알고리즘이란 화살표 두개에 의미를 부여해서 탐색 범위를 압축하는 방법 1차원 배열 위에 2개의 포인터를 만드는 경우 2개의 포인터가 모두 왼쪽에서 시작해서 같은 방향으로 이동 start→ start→ 10 11 18 19 54 21 -> 전형적인 double for loop int[] arr = {10,11,18,19,54,21}; int N = arr.length; for(int i = 0 ; i< N ; i++){ //i 포인터 for(int j = 0 ; j< N ; j ++){ //j 포인터 ... } } 2개의 포인터가 양 끝에서 서로를 향해 이동 start→ ..............
패스트캠퍼스 챌린지 14일차
시청 날짜 : 11/14/2021 시청 강의 : 이분 탐색 이분 탐색 (Binary Search) 정렬이 보장되는 배열에서 기준 x를 가지고 범위를 "이분"하면서 탐색 Search for... x 가 존재하는가 x이하, 미만, 초과의 원소는 몇 개가 있는가 x 랑 가장 가까운 원소는 무엇인가 오름 차순 정렬된 배열의 특성 임의의 M번 인덱스에 있는 A [M] 이 X 보다 크다면, A [M... N] 은 전부 x 보다 크다 임의의 M번 인덱스에 있는 A [M] 이 X 보다 작다면, A [M... N] 은 전부 x 보다 작다 위 조건은 정렬이 된 상태에서만 사용 가능 Example x = 38 10 15 20 35 40 L = 1, R = 5로 잡음 L : 탐색할 가치가 있는 범위의 왼쪽 끝 인덱스 R : ..
패스트캠퍼스 챌린지 13일차
시청 날짜 : 11/13/2021 시청 강의 : 알고리즘 해결에 중요한 재귀 호출 이해 좀 늦은 감이 있지만, 재귀 호출 강의를 들어보았다. 재귀 재귀 함수란 특정 함수 내에서 자기 자신을 다시 호출하여 문제를 해결해나가는 함수이다. 문제를 해결하기 위해 원래 범위의 문제에서 더 작은 범위의 하위 문제를 먼저 해결하여 원래 문제를 해결해 나간다. Factorial 예제 그 유명한 팩토리얼 예제... 스택 오버플로우에서 그림과 코드를 가져와봤다. int factorial(int n) { if (n 1)로 주었지만, 대학에서 배울 때 Base Case를 콕 잡아서 코드 쓰는 게 더 편해졌기때문인지 몰라도, n==1일 때를 base case로 잡는 게 더 보기가 좋은 것 같다. public class Fact..
패스트캠퍼스 챌린지 12일차
시청 날짜 : 11/12/2021 시청 강의 : 다양한 정렬 응용법 - 응용 편 https://junebee.tistory.com/18 에 이어, 정렬 응용문제 강의를 들었다. 수열 정렬 https://www.acmicpc.net/problem/1015 카드 https://www.acmicpc.net/problem/11652 화살표 그리기 https://www.acmicpc.net/problem/15970 위 문제를 풀이해봤다. 화살표 그리기는 시간이 없어서 아직 풀지 못했다. 후에 시간이 나면 추가적으로 업로드하겠다. 수열 정렬 문제 해석 주어진 배열과 해당 원소의 인덱스를 따로 저장한다. [Original Array] index 0 1 2 3 4 5 element 5 4 1 3 5 7 위 배열을 오름..
패스트캠퍼스 챌린지 11일차
시청 날짜 : 11/11/2021 시청 강의 : 다양한 정렬 응용법 (Sort Application) 정렬 정렬은 조건이 필요하다. 배열의 정렬은 Arrays.sort(arrName)로 구현할 수 있다. 하지만, 만약 정렬의 조건이 integer나 String 이 아닌 경우는 새로운 조건이 필요한데 당연히 자바는 우리가 이 조건을 직접 지정해주지 않으면 정렬해주지 않는다. 따라서, comparator를 implement 해서 compareTo 메서드를 재정의하여, 우리가 새로운 조건을 지정해주면 새 기준에 의해 정렬해준다. @override public int compareTo(Object o ) { return num-o.num ; //small to big - ASC //return o.num - n..
패스트캠퍼스 챌린지 10일차
시청 날짜 : 11/10/2021 시청 강의 : 어떻게든 푼다. 완전 탐색 (Brute Force) 응용편 오늘은 완전탐색 강의 2를 듣기 위해 문제를 푸는것을 중심으로 학습했다. 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 부분수열의 합 https://www.acmicpc.net/problem/1182 암호 만들기 https://www.acmicpc.net/problem/1759 위의 연습문제를 모두 dfs를 사용하여 풀었다. 연산자 끼워넣기 무려 삼성 기출문제로 분류되어있다. 이렇게만 나오면 얼마나 행복할까.. DFS private static void dfs(int depth , int calculated){ ... } //main 함수: dfs(1,nums[..