일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 시뮬레이션
- 21921
- 16985
- 17503
- 이분 탐색
- BOJ
- redis
- 구간합
- 누적합
- 맥주 축제
- 세그먼트 트리
- SWEA
- dfs
- DP
- NCP
- 최소신장트리
- mst
- c++
- 민준이와 마산 그리고 건우
- 11659
- Naver Cloud
- 다익스트라
- 점수 따먹기
- mongodb
- 크루스칼
- 정렬
- golang
- gorilla/mux
- 구현
- Today
- Total
목록전체 글 (50)
Gi-Log
객체 지향 프로그래밍이란? 프로그래밍에 필요한 데이터들의 속성, 기능, 동작, 특징 등을 추상화하여 클래스로 만들고, 클래스의 객체들이 유기적으로 동작하도록 하는 프로그래밍 객체 지향 프로그래밍의 "장점" 코드의 재사용이 용이함 유지보수가 용이함 대규모 프로젝트 구현에 용이함 실세계의 객체 간 유기적 관계를 모델링(혹은 추상화)한 것이므로 직관적인 코드 분석이 가능함 객체 지향 프로그래밍의 "단점" 처리 속도가 느림 - 객체의 기능이 메소드화 되어 있기 때문에, 함수 호출에 대부분의 처리 시간이 소요됨 객체 양에 따라서 용량이 커짐 설계 시 시간과 노력을 요함 객체 지향 프로그래밍의 4가지 특징 추상화 어떤 객체들의 공통된 속성, 기능, 동작, 특징 등을 파악하고 이름을 붙여, 멤버 변수나 메소드화 하는..
문제 링크: https://www.acmicpc.net/problem/1749 1749번: 점수따먹기 동주는 항상 혼자 노느라 심심하다. 하지만 혼자 놀기의 고수가 된 동주는 매일매일 게임을 개발하여 혼자놀기의 진수를 우리에게 보여준다. 어느 날 동주는 새로운 게임을 개발하였다. 바로 점 www.acmicpc.net 문제 풀이에 이용된 알고리즘: 누적합, 다이나믹 프로그래밍 처음에는 만들 수 있는 모든 부분 행렬을 구하고, 각 부분 행렬 내 원소의 총 합 중 최대값을 구하는 방법에 대해서 생각해봤다. 부분 행렬을 결정하는 것은, 부분 행렬의 "좌측 상단"과 "우측 하단" 2가지 이다. 좌측 상단을 알고 있다면, 부분 행렬의 가로 길이와 세로 길이를 통해 우측 하단의 좌표를 구할 수 있다. 따라서 좌측 상..
문제 링크: https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 문제 풀이에 이용된 알고리즘: 단순 구현 거스름돈으로 주는 동전의 개수를 최소화하고 싶다면, 우선 5원짜리 동전을 최대한 많이 사용하고 남은 금액을 2원으로 만들면 된다. 따라서 for문을 이용해서, 지급 가능한 5원짜리 동전을 하나씩 줄여가며, 매 경우에 5원으로 지급하고 남은 금액을 2원으로 지급 가능하다면 그 경우가 답이다. 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..
동기화 경쟁 상황(Race Condition)을 막기 위해 공유 자원으로의 복수 프로세스의 접근을 순차적으로 처리될 수 있도록 하는 것 경쟁 상황(Race Condition) 공유 자원에 2개 이상의 프로세스가 동시에 접근하여 수정, 갱신 등을 진행하려고 할 때 프로세스의 접근 순서에 따라서 그 결과가 달라지는 상황 임계 영역(Critical Section) 2개 이상의 프로세스가 공유 자원에 동시에 접근하는 작업을 실행하는 (코드)여역 하나의 프로세스가 접근 중일 때는 다른 프로세스가 진입하지 못하게 보장해주어야 하는 영역 임계 영역 문제 2개 이상의 프로세스가 CS에 동시에 접근할 때 발생하는 동기화 문제 문제 해결을 위한 세가지 조건 상호 배제 임계 영역 내에 어떤 프로세스 P1이 존재한다면 다른 ..
OS의 정의 명확한 단 하나의 정의는 존재하지 않음 컴퓨터 시스템을 관리하는 소프트웨어 하드웨어와 어플리케이션 프로그램 그리고 사용자를 매개함 컴퓨터에서 늘 돌아가고 있는 프로그램 --> 이를 보통 kernel(커널)이라고 함 Bootstrap 프로그램 컴퓨터 부팅을 위해 가장 먼저 하는 행동을 "전원 켜기"이다. 전원이 처음 들어오면 RAM에는 아무 것도 없다. 따라서 CPU가 제일 처음 로드하는 프로그램은 ROM에 저장되어 있으며 이를 Bootstrap 프로그램이라고 한다. Bootstrap은 OS를 메모리에 로드하는 역할을 하며, 로드된 OS는 하드웨어 리소스를 초기화한다. Interrupts(인터럽트) 하드웨어는 언제든지 인터럽트를 야기할 수 있다. 시스템 버스를 이용하여 CPU에게 인터럽트 신호..
문제 링크: https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이에 이용된 알고리즘: 구현, 시뮬레이션 문제에 주어진 대로 구현하면 쉽게 풀리는 문제였던 것으로 기억한다. 처음 입력 시 arr[r][c] == 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..
CPU 스케줄링이란? 레디 큐 내의 프로세스 중에서, 어떤 녀석에게 CPU를 할당할 것인지 결정하는 것 혹은 그 방식(Policy) CPU 스케줄링에서 고려될 수 있는 것들 CPU Utilization(CPU 이용률) Throughput - 얼마나 많은 프로세스를 처리할 수 있는가 Turnaround Time(반환 시간) - 프로세스가 도착한 시점부터 해당 프로세스가 완료될 때까지 걸리는 시간 Waiting Time(대기 시간)- 어떤 프로세스가 레디 큐에서 대기하는 시간의 총 합 CPU 스케줄링 방식 FCFS 먼저 CPU를 요청한 프로세스(= 먼저 온 프로세스)에게 CPU를 할당한다. FIFO Queue를 이용한 간단한 구현 가능 프로세스가 도착한 순서 혹은 CPU를 요청한 순서에 따라서 Average..
문제 링크: https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 풀이에 이용된 알고리즘: 구간합, 누적합 고정된 길이 x의 구간 내 원소의 합이 가장 큰 구간을 찾고 그 합을 출력하는 문제이다. 또한 서로 다른 구간일지라도 동일한 합을 보이는 경우, 그 합이 등장한 횟수를 증가시켜가며 최종적으로 횟수 또한 출력한다. for문 사용하여 어떤 원소들의 합을 구하면 되고, 해당 구간을 한칸씩 이동시켜나가면서 그 합의 maximum 값을 찾으면 되..