본문 바로가기

분류 전체보기

(308)
[백준/Python] 2110번: 공유기 설치 문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 요약 도현이의 집 N개가 수직선 위에 있고 공유기 C개를 설치하려고 할 때, 가장 인접한 공유기 사이의 거리의 최댓값을 출력한다. + 한 집에는 공유기를 하나만 설치할 수 있다. 코드 def binSearch(): global start, end, ans while start = cur + mid: # 현재 집에서 다음 집의 거리가 m..
[Computer Architecture] 데이터 경로 + 한국항공대학교 길현영 교수님의 컴퓨터구조론 과목 내용을 정리한 글입니다. 데이터 경로 (Data Path) = CPU가 명령어 실행을 위해 데이터를 경유시키는 경로 (순서화된 단계) - 데이터: 명령어 데이터, 명령어에 따른 피연산자 / 결과 데이터 ex) 세탁 시스템의 데이터(세탁물) 경로: 세탁 - 탈수 - 건조 1. 다음에 수행할 명령어(데이터) 주소를 계산한다. (연산장치, PC) 2. 데이터를 처리하기 위해 메모리에서 데이터를 읽거나 저장한다. (Read, Write) 3. CPU 내부의 고속 메모리인 레지스터 파일에 데이터를 일시적으로 보관하고, 연산장치를 통해 산술연산과 논리연산을 수행하고, 그 결과값을 레지스터 파일 / 연산장치에 보관한다. ..
[Algorithm] 탐색 트리 + 항공대학교 이인복 교수님의 알고리즘 해석 및 설계 과목 내용를 정리한 글입니다. 탐색 트리 문제의 정의 집합을 표현하는 자료 구조 - 문제를 풀기 위해서 수학의 집합의 개념을 이용할 수 있다. (집합이란 어떤 답이 '있다', '없다'를 알 수 있어야 한다.) - 집합을 어떻게 표현할 것인가? 집합에 대한 연산 1. membership query => O(n) - 어떤 원소가 집합에 존재하는지를 판별할 수 있는 연산 2. insertion (삽입) => O(1) - 배열 맨 뒤에 삽입 3. deletion (삭제) => O(n) 탐색 트리 레코드 = 개체에 대한 모든 정보를 묶은 저장 단위 ex) 주민등록번호, 이름 키 = 각 레코드를 대표할 수 있는 값 + 정수로 가정한다. (같은 키를 같는 노드는 ..
[백준/Python] 2805번: 나무 자르기 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 요약 상근이는 N 그루의 나무를 절단기로 높이를 지정하고 잘라 M미터의 나무를 구하려고 한다. 예를 들어 한 줄에 연속해 있는 나무의 높이가 20, 15, 10, 17이라고 할 때, 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15, 10, 15가 될 것이고 상근이는 길이가 5인 나무와 2인 나무를 구할 수 있다. 적어도 M..
[Kotlin] 인터페이스 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 인터페이스 일종의 추상 클래스로, 추상 클래스보다 제약이 많으나, 여러 개를 상속 받도록 할 수 있는 특수한 개념이다. - 원래 클래스는 하나의 상위 클래스만 상속 받을 수 있다. - 하지만, 인터페이스는 갯수에 제한 없이 상속이 가능하다. - class 대신에 interface라는 예약어로 시작한다. - interface의 멤버는 default가 추상(abstract) 멤버이다. => 즉, 인터페이스는 자격의 의미이다. (상속 받는 클래스에게 자격을 부여한다.) interface Vehicle { // 아래 프로퍼티는 abstract가 붙은 것으로 간주한다. val currentSpeed : Int fun move() f..
[Kotlin] 추상 클래스와 추상 멤버 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 추상 클래스와 추상 멤버 추상 클래스: 직접 인스턴스화 할 수 없고, 다른 클래스의 상위 클래스 역할만 할 수 있는 클래스이다 abstract class Entity(val name: String) class Person(name: String, val age: Int) : Entity(name) fun main() { // val entity = Entity("Unknown") // error val entity: Entity = Person("John", 32) // OK } 추상 클래스의 생성자 추상 클래스의 생성자는 하위 클래스의 위임 호출로만 호출 가능하다. abstract class Entity(val name:..