일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 위상 정렬
- 알고리즘
- tarjan
- disjoint set
- kruskal
- union-find
- miller-rabin
- 그래프
- spring boot
- DP
- MST
- BindingAdapter
- BFS
- 위상정렬
- SCC
- Java
- DFS
- 투 포인터
- 페르마 소정리
- 이분 탐색
- Linux
- 분리 집합
- Meet in the middle
- concurreny
- kapt
- 구현
- 누적 합
- MySQL
- 백트래킹
- springdoc
- Today
- Total
목록전체 글 (52)
기맹기 개발 블로그
운영체제란? 운영체제는 컴퓨터 하드웨어 및 소프트웨어 자원을 관리하고 컴퓨터 프로그램에 공통 서비스를 제공하는 시스템 소프트웨어이다. 목차 프로세스 관리 메모리 관리 파일시스템 관리 입출력 관리 네트워크 관리 사용자 관리 1. 프로세스 관리 1-1. 프로세스 생성 및 제거 프로세스 이미지 프로세스에 할당된 가상 주소 공간 내에 위치한다. 프로그램의 코드, 데이터, 스택 등 모든 정보를 포함한다. PCB (Process Control Block) 프로세스 생성 시 OS의 커널 메모리 영역에 동적으로 할당된다. 프로세스의 식별자, 상태, 우선순위, PC, 메모리 포인터 등을 포함하는 데이터 구조 user mode에서는 PCB에 기록된 memory limit + base를 벗어난 영역에는 접근 시 trap 발..
Thread 클래스로부터 직접 생성 java.lang.Thread 클래스로부터 Runnable을 매개값으로 갖는 생성자를 호출하여 생성할 수 있다. Runnable은 작업 스레드가 실행할 수 있는 코드를 가진 객체이다. @FunctionalInterface public interface Runnable { public abstract void run(); } Runnable 구현 클래스를 생성하거나, 익명 구현 객체를 만들거나, (자바 8부터는) 람다식을 이용해 매개값으로 전달할 수 있다. 작업 스레드는 생성되는 시점에 실행되는 것이 아니라, start() 메소드를 호출해야 실행된다. Thread thread = new Thread(() -> { // 스레드 실행 코드 }); thread.star..
기존 코드에서의 문제점 저는 springdoc을 이용해 Swagger로 API 문서를 제공하고 있었습니다. springdoc에서 컨트롤러의 API 메소드에 붙여서 자동으로 문서화를 지원하는 어노테이션은 @ApiResponse입니다. 이는 다음과 같이 구성된 인터페이스입니다. @Target({METHOD, TYPE, ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Repeatable(ApiResponses.class) public @interface ApiResponse { String description() default ""; String responseCode() default "default"; Header[] headers()..
제네릭 Java 5부터 추가된 Generic을 사용하여 다음의 장점을 얻을 수 있다. 컴파일 시간에 강한 타입 체크가 가능하다. 불필요한 타입 캐스팅을 제거하여 성능을 향상시킨다. 제네릭 타입: class, interface public class 클래스명 { ... } public interface 인터페이스명 { ... } 타입을 파라미터로 가지는 클래스와 인터페이스를 제네릭 타입이라고 한다. 타입 파라미터는 변수명과 동일한 규칙으로 작성할 수는 있지만, T 처럼 대문자 한글자로 표현하는 것이 관례이다. 자바 7부터 연산자를 사용하면 컴파일러가 타입 파라미터를 자동 추론한다. List myList = new ArrayList(); // 타입 파라미터 명시 List myList = new ArrayLi..
BOJ 17404 RGB거리 2 난이도 : 골드 4 https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 전략 전형적인 DP 문제이다. i 번째 집을 j 색으로 칠하는 비용을 cost[i][j]라고 하자. 0번째 집 ~ i 번째 집을 칠할 때 i번째 집을 j 색으로 칠했을 때 최소 비용을 다음과 같은 점화식으로 표현할 수 있다. dp[i][j] = cost[i][j] + min( {dp[i - 1][j가 아닌 색] } )..
BOJ 16946 벽 부수고 이동하기 4 난이도 : 골드 2 https://www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 www.acmicpc.net 전략 N, M blankCount[r][c] 2. 1인 칸에 대해서 상하좌우 blankCount를 더한다. 시행착오 4 5 11001 00111 01010 10101 위의 예시를 보자. 1의 과정이 끝난 다음에 blankCount는 다음과 같이 기록될 것이다. 00220 33000 30101 01010 이 때 map..
BOJ 17143 낚시왕 난이도 : 골드 1 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 전략 구현문제이지만 시간초과가 나지 않도록 해야한다. R, C c) { shark.dir = opposite(shark.dir); ny = shark.y + dy[shark.dir]; nx = shark.x + dx[shark.dir]; } shark.y = ny; shark.x = nx; } } 상어의 위치 갱신을 O(1)만에 할 ..
BOJ 26157 즉흥 여행 (Hard) 난이도 : 플래 3 https://www.acmicpc.net/problem/26157 26157번: 즉흥 여행 (Hard) 첫째 줄에 나라의 개수 $ N $과 항공편의 개수 $ M $이 주어진다. $( 1 \le N \le 200\,000; $ $ 0 \le M \le 500\,000 )$ 둘째 줄부터 $ M $개의 줄에 걸쳐 항공편의 정보가 두 정수 $ v $ $ w $로 주어진다. 이는 $ v $ www.acmicpc.net 전략 SCC에 속한 임의의 두 정점은 방문할 수 있다. 위의 예시에서는 그래프 전체가 하나의 SCC이므로 모든 정점이 결과가 된다. 위의 예시에서는 SCC는 [1], [2, 3, 4] 두 개이며 SCC로 그래프를 압축하면 [1] -> [..