일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- java
- LeetCode
- 알고리즘
- react
- db
- Database
- 자바
- VIM
- 동적 계획법
- frontend
- DP
- Graph
- BFS
- 다이나믹 프로그래밍
- Redux
- 백준
- DFS
- 리트코드
- network
- TypeScript
- Data Structure
- 그레이들
- Python
- Algorithm
- 프로그래머스
- 안드로이드
- Javascript
- CS
- git
- vscode
- Today
- Total
목록전체 글 (390)
늘 겸손하게

그리디 알고리즘 문제 회의실 배정 문제로 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾는 문제 문제 풀이 그리디 알고리즘의 정의를 다시 생각해보면 현 상황에서 가장 최적의 선택을 하는 알고리즘이 그리디 알고리즘. 이 점을 이용할 수 있도록 주어진 N 개의 시작시간, 종료시간 쌍을 정렬하자. algorithm 라이브러리를 include 하여 sort 함수를 이용하면 쉽게 정렬이 가능하다. sort(v.begin(), v.end(), cmp); v 는 N개의 회의시간 정보를 담고 있는 벡터이다. cmp는 어떤 방식으로 정렬할지 sort 함수에 알려주는 함수이다. typedef struct pair { int start; int end; } Pair; bool cmp(Pair f,..

그리디 알고리즘 문제 가장 큰 숫자부터 K를 나누고 그 몫을 계속 누적하여 더하면서 그 나머지를 K에 다시 저장하는것을 K가 0이 될때까지 반복하면 풀리는 문제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include using namespace std; int main(void) { int N , K; cin >> N >> K; int * arr = (int*)malloc( sizeof(int) * N ); for (int i = 0 ; i > arr[i]; } int count = 0; while ( K != 0 ) { count += K / arr[N-1] ; K = K % ..

백트래킹 문제 한번 선택한 정수는 다시 선택할 수 없으므로 visited 배열을 이용하여 promising 한지 promising 하지 않은지 판별할 수 있습니다. 재귀적으로 깊이 들어가다가 M 개의 수를 선택하면 결과를 출력합니다 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include using namespace std; const int MAX = 9; int N, M; int arr[MAX] = {0,}; bool visited[MAX] = {0,}; void dfs(int cnt) { if (cnt == M ) { for (int i ..

brute force method 으로 해결하는 문제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include #include using namespace std; int main(void) { set s; int N , M; cin >> N >> M; int * arr = (int*)malloc( sizeof(int) * N ); for (int i = 0; i > arr[i]; } for (int i = 0; i

재귀 함수로 피보나치수열을 구현하여 해결 가능합니다 C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using namespace std; int fib(int n) { if ( n > a; int f = fib(a); cout

리눅스 터미널에서 java 파일을 컴파일하고 실행할 수 있는 방법을 소개합니다 첫 번째로 javac를 설치합니다 sudo apt-get install openjdk-11-jdk 현재 openJDK 버전 16까지 있으니 원하시는 버전의 openJDK를 설치하시면 됩니다 설치가 완료되면 java -version 혹은 javac -version으로 설치 버전을 확인 가능합니다 예제 자바 파일 test.java 를 생성합니다 1 2 3 4 5 6 7 8 public class test { public static void main(String [] args) { System.out.println("Hello world!"); } } Colored by Color Scripter cs javac로 java 파일을..

간단한 팩토리얼 계산 문제 단 재귀함수로 풀어야한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include using namespace std; int pac(int n); int main(void) { int N; cin >> N; int p = 0; p = pac(N); cout

지금이 VIM 상에서 몇 번째 줄인지 알기 어려울 때 사용하면 좋은 기능 ESC를 누르고 명령모드로 들어가서 :set number 혹은 :set nu 를 입력하면 줄이 보이게됩니다 줄 보이기를 종료하려면 :set nu! 계속 숫자를 보이게 하고 싶다면 홈 디렉토리의 .vimrc 를 수정하여 vim을 켤 때마다 default으로 줄이 보일 수 있도록 할 수 있습니다. 홈 디렉토리에서 vi ~/.vimrc 를 입력하여 .vimrc를 열고 set number 를 입력한 뒤 저장하면 VIM을 열 때마다 줄이 생깁니다