일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백트래킹
- 이분 매칭
- 연속합
- tensorflow
- 네이버 지도 api
- Floyd-Warshall
- pythonanywhere
- 이친수
- 세그먼트 트리
- 분할정복
- 나무자르기
- 알고스팟
- 쉬운 계단 수
- Mysql5.7
- Ubuntu64bit
- VituralBox
- 다이나믹 프로그래밍
- 피보나치수열
- Flpyd-Warshall
- 피노나치 수열
- 알고리즘
- 이분매칭
- 백준
- SpringBoot
- 코드그라운드
- 최소스패닝트리
- 이분탐색
- 동적계획법
- 최소신장트리
- 축사 배정
- Today
- Total
목록개발 (132)
초보개발자
import java.util.*; Scanner sc = new Scanner(System.in); int a = sc.nextInt(); System.out.println(a); JAVA는 처음 해보므로, 표준입출력도 적어둔다.
입력: 방의 개수 N, N개의 방에 들어가는 응시자수 Ai, 총감독관이 볼 수 있는 사람 수 B, 부감독관이 볼수 있는 사람 수 C출력: 시험을 치기 위한 감독관이 수소스코드 #include #include using namespace std; int main() { int n, b, c; scanf("%d", &n); vector room(n); for(int i=0; i
입력: 가로 R, 세로 C, 로봇청소기의 위치(x, y), 방향(0:북쪽, 1: 동쪽, 2: 남쪽, 3: 서쪽) RxC 지도(1: 벽, 0: 청소)출력: 로봇이 청소하는 공간의 개수소스코드 #include using namespace std; bool clean[50][50] = { false, }; int map[50][50]; int mov[4][2] = { {0, -1}, {-1, 0}, {0, 1},{1, 0} }; void dfs(int x, int y, int& rooms, int dir, const int r, const int c) { if(!clean[x][y]) rooms++; clean[x][y] = true; int mX, mY, see = dir; for (int i = 0; i ..
입력: 일수 N, N개의 걸리는 일과 금액출력: 최대 금액알고리즘: 동적계획법, Knapsack 알고리즘소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define plan pair #define mp(x, y) make_pair(x, y) using namespace std; vector cache; vector schedule; int benefit(int idx, int n) { if (idx >= n) return 0; int& ret = cache[idx]; if (ret != -1) return ret; ret = max(benefit(idx + 1, n), ret); if (idx + schedule[idx].first
요새 자주 사용하는 파일입출력인데, 기록해둔다.보통 C는 FILE 타입을 이용하여 fopen 함수를 이용하고, C++은 fstream 라이브러리의 ifstream, ofstream이나 둘다 합친 fstream 클래스를 이용한다.내가 요새 사용하는 함수는 freopen이다. freoepn( filename, status, stream)filename = 열고 싶은 파일status = "r"(읽기전용), "w"(쓰기전용) "rw"stream = 입출력을 의미한다. #include using namepspace std; int main(){ freopen("input.txt", "r", stdio); } 이렇게 사용하면 표준입출력 스트림을 이용하여 입력받기 때문에 cin, cout (C++) 또는 scanf,..
String을 이용하면서 컴파일 에러가 나서 확인해봤다. 다음은 C++11 때 추가된 함수들이라고 한다.stoi, pop_back 등 만약, stoi 함수를 쓸 수 없는 경우, 라이브러리에 stdlib.h를 추가하고 atoi로 수정한다.단, 인자의 경우 string이 아니라 const char*타입이므로 string을 계속 사용할 경우 c_str 함수를 이용하여 넘겨준다. 참고로 gcc-4.8.x 버전은 C++11 버전이라고 한다.
출처: https://programmers.co.kr/learn/courses/9/lessons/276- 쓰레드는 실행가능상태인 Runnable과 실행상태인 Running 상태로 나뉜다.- 실행되는 쓰레드 안에서 Thread.sleep()이나 Object가 가직 있는 wait() method가 호출이 되면 쓰레드는 블록상태가 된다.- Thread.sleep()은 특정시간이 지나면 자신 스스로 블록상태에서 빠져나와 Runnable이나 Running 상태가 된다.- Object가 가지고 있는 wait() method는 다른 쓰레드가 notify()나 notifyAll() method를 호출하기 전에는 블록상태에서 해제되지 않는다.- wait() method는 호출이 되면 모니터링 락을 놓게 된다. 그래서 대..
출처: https://programmers.co.kr/learn/courses/9/lessons/274공유객체가 가진 메소드를 동시에 호출 되지 않도록 하는 방법- method 앞에 synchronized을 붙인다.- 여러개의 쓰레드들이 공유객체의 method를 사용할 때 method에 synchronized가 붙어 있을 경우 먼저 호출한 method가 객체의 사용권(Monitoring Lock)을 얻는다.- 다른 synchronized method들이 객체의 사용권을 가지고 있더라도, synchronized를 가지고 있지 않은 method는 중간 중간 호출된다.- 모든 method에 synchronized를 붙이면, 마지막에 호출된 method는 너무 오래 기다리게 되므로, 동시에 호출됐을 때 문제가 ..
fork는 자식프로세스를 만들기 위해서 사용되는 프로세스 생성기이다. fork에 의해 생성된 자식프로세스는 자신만의 PID를 가지며, PPID는 부모 프로세스의 PID를 가지게 된다. 쓰레드 방식에 비해서 부모프로세스의 페이지 테이블을 복사하고 자식 프로세스에 대한 task 구조체를 만들기 위한 시간과 메모리의 소비가 크다는 단점이 있다. 성공할 경우 자식 프로세스의 PID를 부모에게 리턴되며, 자식에게는 0이 리턴된다. 실패할 경우에는 -1이 리턴되며, 적절한 errno 값이 설정된다. fork 함수같은 경우, 이론 문제에서 자주 나오는 것 같다. 출처: https://www.joinc.co.kr/w/man/2/fork
출처: https://programmers.co.kr/learn/courses/9/lessons/272이번에는 Thread 클래스를 상속하지 않고 Runnable 인터페이스를 이용하여 구현하는 방법이다.Runnable 인터페이스는 run method를 오버라이딩해주면 된다.이렇게 하는 이유는 JAVA는 단일 상속만 가능하기 때문이다. 인터페이스는 여러개 구현해서 사용할 수 있다. 단, 메인클래스에서 Thread를 상속받은 쓰레드를 사용하는 것이 아니기 때문에 start() method가 없다.쓰레드를 이용하기 위해서는 start() method를 꼭 호출해야하므로, 다음과 같이 하면 된다.Thread 객체를 새로 생성해 생성자를 이용하여 만들어준다. 예를 들면 Runnable 인터페이스를 이용하여 만들어..