일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 응용 계층
- baekjoon
- Application Layer
- STL
- 프로그래머스
- Djikstra
- dp
- Network
- 부트시퀀스
- 릿코드
- 전송 계층
- Transport layer
- BST
- BHS
- leetcode
- 임베디드
- ps
- 데이터베이스
- 네트워크
- Database
- 관계형 모델
- 자료구조
- 다익스트라
- Embedded
- swea
- 백준
- boot sequence
- C++
- DB
- 문제풀이
- Today
- Total
목록전체 글 (69)
BOBO's Note
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 � www.acmicpc.net 풀이 방법 N개의 집 중 C개의 집에 공유기를 설치하는 모든 경우의 수는 이다. 각 경우의 수에 대하여 최소 인접 거리를 구하는 것은 O(C)의 시간이 걸리기 때문에 전체 시간복잡도는 이다. Brute force 방식으로 모든 경우의 수에 대하여 계산하면 시간 초과가 발생한다. 따라서 이진 탐색을 활용해 인접한 공유기 사이의 최소 거리를 찾아..

리눅스는 다양한 상황에서 전력을 관리한다. 예를 들어 프로세스를 잠시 멈추었다가 시작할 때, CPU가 idle하거나 부하가 작은 작업을 할 때 전력을 적게 소모하도록 관리하고 있다. Background Energy(에너지)와 Power(전력)은 다르다. 에너지는 전체 시간동안 소모된 총 전력량이다. CPU의 전력 소모량은 크게 두 부분으로 나뉜다. CPU의 상태와 관계없이 항상 일정량 소모되는 과 CPU 상태에 따라 달라지는 으로 구성된다. 이때, 은 capacitor, frequency, voltage에 의해 결정된다. voltage가 일정하다고 가정할 때, frequency를 낮추면 가 줄어든다. 이로 인해 도 줄어들기 때문에 일을 처리하기 위한 시간이 오래 걸린다. 반대로 frequency를 높이면..
Bare Metal Bare Metal은 운영체제가 설치되어 있지 않은 컴퓨터 하드웨어를 의미한다. Bare Metal Programming은 운영체제 없이 바로 하드웨어를 제어하는 형태의 프로그래밍이다. 임베디드 시스템에서는 운영체제를 구동하는 것 자체도 오버헤드가 큰 작업일 수 있다. 또는 특정 하드웨어를 오직 한 애플리케이션에서만 제어하기 때문에 굳이 OS로 자원을 관리해줄 필요가 없는 경우도 있다. 이런 경우, 베어 메탈 프로그래밍을 통해 하드웨어를 제어하는 것이 더 좋다. 베어 메탈 프로그램을 이미지로 만들어서 하드웨어에 포팅한다. 부팅 단계에서 커널 이미지 대신에 우리가 개발한 이미지로 실행되도록 한다(이런 관점에서 커널도 일종의 베어 메탈 프로그램이라 볼 수 있다). 예제 코드 베어 메탈 프..
Reactive Programming Reactive Programming이란, 실시간으로 반응하는 프로그래밍 또는 비동기적 데이터 스트림을 처리하는 프로그래밍이다. 반응형 프로그래밍에서는 기본적으로 모든 것을 비동기적인 데이터 스트림으로 간주하고, 이 스트림을 옵저버 패턴을 이용해서 처리한다. 옵저버 패턴이란, 옵저버블 객체의 상태가 변할 때 등록된 옵저버들에게 이를 알려주는 디자인 패턴이다. 다른 말로 하자면, 실시간으로 반응하기 위해 프로그램은 각 데이터 스트림을 observe하여 이벤트가 발생하는 것을 notice한다. Functional Programming Functional Programming이란, 프로그램을 수학적 함수의 조합으로 만드는 방식으로 람다 대수로부터 발전했다. 이때 함수는 프..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 방법 각 사람으로부터 모든 BC(=Battery Charger)까지의 거리를 계산하여 선택할 수 있는 BC를 available_bc 벡터에 추가한다. for (int i = 0; i < 2; i++) { for (int j = 0; j < num_bc; j++) { d = abs(people[i].r - bc[j].r) + abs(people[i].c - bc[j].c); if (d
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo&categoryId=AWXRUN9KfZ8DFAUo&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 방법 길이가 n인 16진수 수열이 주어졌을 때, 앞에서부터 n/4개의 숫자가 비밀번호 후보가 된다. 이를 n번 한칸씩 shift하여 총 4*n개의 비밀번호 후보를 얻을 수 있다. 이때, 한칸씩 shift하는 것을 수열을 두개 이어붙여 손쉽게 구현할 수 있다. for (int i = 0; i < N; i++) { ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 방법 이 문제 역시 구슬을 쏘는 위치의 순서를 모든 경우를 구하여 계산했다. W*H 게임판에서 N번 구슬을 쏘는 경우의 수는 W^N이다. 이때, W의 최대값은 12, N의 최대값은 4이기 때문에 전체 경우의 수는 12^4가지이다. 구슬을 쏘는 위치의 순서가 정해졌을 때, 게임을 시뮬레이션하는 함수는 play()이다. 각 슈팅에 대하여 shoot_at() 함수로 구현했다. int play() {..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 방법 n명의 사람이 2개의 계단 중 하나를 선택하여 내려갈 수 있다. 계단을 선택하는 전체 경우의 수는 2^n인데, n이 최대 10이기 때문에 모든 경우에 대하여 소요 시간을 구하였다. 각 사람들이 계단을 선택하는 조합을 구하고, 구한 조합에 대하여 calc_time() 함수를 통해 소요 시간을 구한다. 그리고 그 중 최소 소요시간을 result에 업데이트해나간다. void min_time(i..