전체 글
-
탐색 알고리즘 문제 풀어보기 5(백준 2343번 기타 레슨)알고리즘 2023. 3. 24. 19:17
이번에는 이진탐색을 이용해 문제를 풀어보자. https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 이 문제는 여러 자연수와 최대 그룹수가 주어지면 그 자연수들을 그룹으로 묶을 때 그룹의 최소크기를 구하는 문제이다. 단 숫자들에게는 순서가 있어 이 순서가 유지되며 묶어야 한다는 조건이 있다. 순서가 있다는 조건에서 이진 탐색을 써야겠다는 생각을 해야 하는 문제이다. 문제를 해결하기 위해서는 가능한 그룹의 크기를 범위로 지정해 놓고 직접 해보면서 그룹의 크기를..
-
03.22 수업학교 수업 정리/데이터베이스 2023. 3. 24. 18:48
데이터베이스 설계 방식에는 top-down과 bottom-up방식이 있다. 탑다운은 구조부터 설계한 후 데이터를 채우는 것이고 바텀업은 데이터를 먼저 그룹화해 테이블을 만들고 그것으로 구조를 만드는 것이다. 데이터베이스 디자인은 4단계로 이루어진다. 1) 사용자가 어떤 데이터를 필요로 하는지, 그것이 효과적이고 가능한 일인지, 어떤 연산이 필요한지 인터뷰를 통해 결정한다. 2) 스키마를 디자인한다. 여기에는 entity의 타입, 관계, 제약조건이 포함된다. 데이터 저장과 구현에 관한 것도 자세히 정하고 전문가가 아닌 사람과의 소통도 필요하다. 하이레벨 모델인 ER을 사용해 진행. 3) 논리적 디자인 단계로 ER을 mapping 하여 관계형으로 전환한다. SQL을 이용한 스키마 정의가 포함된다. 4) 물리..
-
03.20 수업학교 수업 정리/컴퓨터 네트워크 2023. 3. 24. 01:00
네트워크 애플리케이션에서 쓰기 프로그램은 서로 다른 end 시스템에서 실행되며 네트워크를 통해 통신한다. 코어 부분에는 쓰기 프로그램이 없고 유저 애플리케이션을 실행하지 않는다. 애플리케이션 아키텍처에는 클라이언트-서버 구조와 피어-피어방식이 있다. 초창기에는 거의 클라이언트 서버였다. 클라이언트 서버 아키텍처 서버는 항상 켜져 있으며 고정 ip를 가진다. 데이터센터이다. 클라이언트는 서버와 통신을 하며 항상이 아니라 간헐적으로 접속한다. 클라이언트는 동적 ip를 가질 수 있다. 클라이언트끼리는 직접 통신이 불가능하다. 피어-피어는 항상 켜있을 필요가 없다. end끼리 직접 연결되어 있다. 피어는 다른 피어에게 요청을 보내고 또 다른 피어에게 서비스를 제공할 수 있다. 피어는 간헐적으로 접속하며 ip를 ..
-
03.22 수업학교 수업 정리/컴퓨터구조 2023. 3. 23. 23:30
하드웨어의 복잡성 증가, 명령어 한계, 전력 제한으로 더 이상 싱글 코어의 성능을 향상하기 어렵기 때문에 멀티코어로 여러 프로그램을 동시에 실행하는 쪽으로 발전 중. 과거에는 cpu가 노스브리지를 거쳐 메모리에 접근했지만 현재는 내장되어 바로 접근 가능. 컴퓨터의 성능은 총 명령어수(NI) * 명령어당 클럭사이클 수(COI) * 클럭 사이클 타임(T)으로 나타낸다. 3가지 변수 모두 작을수록 좋다. 총 명령어수는 프로그램이 작을수록 적고 CISC가 적다. 총 명령어수는 코드의 길이가 아니라 반복문도 고려한 크기여야 한다. 명령어당 클럭사이클수는 IPC가 높을수록 작다. 클럭 사이클 타임은 클럭이 높을수록 좋다. SPEC은 싱글성능만 비교가 가능하다. 멀티 성능은 다른 툴로 해야 한다. 수업은 꽉 채워하시..
-
03.20 수업학교 수업 정리/데이터베이스 2023. 3. 23. 01:17
초기의 데이터베이스는 물리적으로 연결되어(서버와 사용자가 유선으로 연결해 사용) 데이터베이스 메인프레임이 모든 연산을 수행하였다. 현재는 네트워크로 연결되어 있어 어디에서나 접속이 가능하고 대부분의 정보가 서버에 저장되어 있으며 서버가 모든 연산을 하지 않고 일부 연산은 클라이언트가 한다. GUI, 출력 등은 클라이언트가 담당. 서버의 부하가 줄어들어 서버는 연산에 더 집중이 가능해지고 스루풋이 향상되었음. 클라이언트 모듈은 사용자 친화적인 UI를 가지고 쉬운 사용을 지원한다. 어떤 데이터베이스 모델을 사용하느냐에 따라서 형태가 달라짐. 최근에는 관계형 데이터베이스가 대부분. 데이터 모델은 3가지 기능을 가진다. 1) 데이터를 어떤 형태로 표현할지 2) 어떤 연산을 제공할 것인지 3) 사용자가 기본 연산..
-
03.20 수업학교 수업 정리/컴퓨터구조 2023. 3. 21. 23:49
ISA는 명령어들의 집합이다. 아키텍처라는 말이 붙는 이유는 같은 명령어를 사용하면 구조가 같기 때문이다. 컴퓨터 구조와 밀접한 관련이 있음. 마이크로 아키텍처는 명령어에 맞는 설계 방법이며 파이프라이닝, 캐시, 분기예측 등등의 방법을 사용하여 성능이 좋은 아키텍처를 만든다. ISA의 종류는 2가지가 있다. CISC(Complex Instruction Set Computer)는 많은 수의 복잡한 명령어 집합이다. 레지스터뿐만 아니라 메모리에 있는 데이터도 연산이 가능하다. 가변길이 명령어이며 실행시간이 일정하지 않아 파이프라이닝에 어려움이 있어 현재는 사용하지 않는다. RISC(Reduced Instruction Set Computer)은 적은 수의 간단한 명령어 집합이다. 고정 길이이며 Load-sto..
-
JAVA 조건문과 반복문에 대해 알아보자JAVA 2023. 3. 19. 04:35
조건문과 반복문은 자바뿐만 아니라 많은 언어에서 비슷한 형식을 가지고 있다. 다른 언어를 알고 있다면 분명 본 적이 있는 구문 들일 것이라고 생각한다. if구문 if문은 어떤 조건식이 참이면 블록 안의 내용을 수행하고 거짓이면 뛰어넘는다. 형식은 다음과 같다. if(조건식){ 실행문; 실행문; ... } 실행문이 한 줄이면 괄호가 없어도 되지만 헷갈리는 경우가 있으니 괄호를 쓰는 것이 좋다고 생각한다. if문은 주로 특정 조건이 만족되면 프로그램을 종료시키거나 특정 위치로 이동하거나 변수를 증감시키거나 하는 방식으로 이용하게 된다. 만약 검사할 조건식이 여러 개이면 if문을 여러 개 사용할 수도 있지만 if-else구문을 이용하면 더 간결하게 코드를 작성할 수 있다. 조건식이 여러 개일 때 작성법이다. ..
-
C언어로 큐(Queue)자료구조 만들기데이터 구조 2023. 3. 18. 16:32
이번에 만들어 볼 데이터 구조는 큐(Queue)이다. 앞의 포스팅인 스택과 세트 느낌이므로 안 읽었다면 보고 오자. 중복되는 부분이 많으므로 빨리빨리 넘어가겠다. 스택과 마탄가지로 불완전하게 구현이 되거나 처리되지 않는 에지케이스가 있을 수 있다. https://mateofwind24.tistory.com/2 C언어로 스택(Stack) 자료구조 만들기 스택(Stack)은 데이터 구조의 한 종류로 나중에 입력된 것이 먼저 출력된다(Last in First out => LIFO)는 특징을 가진 데이터 구조이다. 쉽게 생각하면 책을 위로 쌓다가 읽고 싶은 책이 아래에 있다면 mateofwind24.tistory.com 큐는 데이터 구조의 한 종류로 먼저 입력된 것이 먼저 출력된다(First in First o..