일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- git
- TypeORM
- C++
- AWS
- Spring
- 컴포넌트스캔
- python
- @Component
- nestJS
- @Autowired
- 프로그래머스
- thymeleaf
- nestjs auth
- 파이썬
- 시스템호출
- 카카오 코테
- 해시
- 코딩테스트
- spring boot
- 구조체배열
- 가상면접사례로배우는대규모시스템설계기초
- 카카오
- OpenCV
- 코테
- 스프링
- 카카오 알고리즘
- Nodejs
- 알고리즘
- nestjs typeorm
- C언어
- Today
- Total
목록# CS Study (81)
공부 기록장 💻
8. BOJ 1654 랜선 자르기 문제 1654번: 랜선 자르기 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정..
5. BOJ 2512 예산 문제 2512번: 예산 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127..
7. BOJ 10989 수 정렬하기 3 10989번: 수 정렬하기 3 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 1 1 2 2 3 3 4 5 5 7 💡나의 문제 풀이 작성 코드 import sys n = int(sys.stdin.readline()) array = [int(sys.stdin.readline()) for _ in range(n)] ..
6. BOJ 2108 통계학 2108번: 통계학 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력..
4. 프로그래머스 가장 큰 수 문제 코딩테스트 연습 - 가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 ret..

6. BOJ 2606 바이러스 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이..
5. BOJ 4673 셀프 넘버 4673번: 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 1..
13. BOJ 1931 회의실 배정 https://www.acmicpc.net/problem/1931 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백..
8. BOJ 10610 30 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 예제 입력 1 30 예제 출력 1 30 예제 입력 2 102 예제 출력 2 210 예제 입력 3 2931 예제 출력 3 -1 예제 입력 4 80875542 예제 출력 4 887554..
💡 15. 프로그래머스 체육복 문제 프로그래머스 코딩테스트 연습 - 체육복 문제 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체..

OSI 참조 모델 OSI 참조 모델의 배경 ISO에서 1980년 말 경, 네트워크를 이용해 서로 다른 기종의 통신 시스템 간 상호 접속을 할 수 있도록 정보교환을 위해 필요한 최소환의 네트워크 구조를 제공하는 OSI 기본 참조 모델을 제안, 83년 국제 표준(ISO 7498)로 제정됨 ISO에서 개방형 시스템 간 상호 접속(OSI: Open Systems Interconnection)을 위해 표준화된 네트워크 구조를 제공하는 기본 참조 모델을 제정하여, 이기종 간 상호접속을 위한 가이드라인을 제시하고자 함 OSI 참조 모델의 기본 목표 시스템 간 통신을 위한 표준 제공, 통신을 방해하는 기술적인 문제들을 제거 단일 시스템 간의 정보교환을 하기 위한 상호접속점 정의 제품들 간의 번거로운 변환 없이 통신할 ..

1. 정의 컴퓨터 네트워크 통신(데이터 통신의 정의) 멀리 떨어져 있는 입출력 장치와 컴퓨터를 통신 회선을 이용하여 넓은 범위의 데이터 처리와 데이터 전송을 종합적으로 가능하게 하는 방식 Data, Computer, Network 컴퓨터 통신(Communication) 한 점에서 다른 점으로 어떤 정보를 전달하는 것 목적: 보다 빠르게, 싸게, 정확하게, 안전하게 망(Network) LAN, MAN, WAN 컴퓨터 통신 혁명 특징 Data Processing과 Data Communication 간의 근본적인 차이가 없음 데이터/음성/비디오 통신 간의 차이가 없음 LAN, MAN, WAN들 간의 회선의 구분이 없음 결과 컴퓨터와 통신 산업간의 중복이 증가(보완 발전) 모든 형태의 데이터와 정보를 전송하고 ..
연습문제 1. 메모리 가져오기 정책 중, 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 방식은 무엇인가? 요구 페이징 2. 요구 페이징과 반대로 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식은? 미리 가져오기 (ex- 캐시) 3. 페이지 테이블 엔트리의 구조 중, 페이지가 실제 메모리에 있는지 나타내는 비트는 무엇인가? 유효 비트(valid bit) 6. 프로세스가 페이지를 요청했을 떄 해당 페이지가 메모리에 없는 상황을 무엇이라 하는가? 페이지 부재(page fault) 7. 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되어 있는 성질을 무엇이라 하는가? 지역성 14. FIFO 변형 페이지 교체 알고리즘 중, 대상 페이지를 가리키는 포인터를 사..

1. 가상 메모리 개요 1. 가상 메모리 시스템 가상 메모리란, 물리 메모리 크기와 상관 없이 프로세스에 커다란 메모리 공간을 제공하는 기술 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용 가능하게 된다. 가상 메모리의 크기 크기 = 물리 메모리 크기 + 스왑 영역의 크기 가상 주소를 실제 메모리의 물리 주소로 변환하는 동적 주소 변환을 거치면 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치할 수 있다. 가상 메모리의 메모리 분할 방식 세그먼테이션(가변 분할)과 페이징(고정 분할)기법이 있으며, 세그먼테이션 기법은 외부 단편화의 문제로 잘 사용하지 않는다. 따라서 세그먼테이션-페이징 혼용 기법을 주로 사용 2. 매핑 테이블의..
연습문제 프로세스 간 통신에서 데이터를 양방향으로 전송 가능하지만 동시 전송은 불가능하고 특정 시점에 한쪽 방향으로만 전송할 수 있는 통신 방식은 무엇인가? 반양방향 상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것을 무엇이라고 하는가? 바쁜 대기(busy waiting) 프로세스 간 통신에서 대기가 없는 통신과 대기가 있는 통신의 예를 각각 제시하시오 대기가 있는 통신(동기화 통신): 파이프, 소켓 대기가 없는 통신(비동기화 통신): 전역 변수, 파일 파이프를 이용하여 통신할 때 파이프를 2개 사용하는 이유는 무엇인가? 파이프는 단방향 통신을 지원하므로, 양방향 통신을 하기 위해 파이프 2개를 사용해야 한다. 공유 자원을 병행적으로 읽거나 쓰는 상황을 무엇이라 하는가? 공유 자원의 접근 공..

5장의 목표 독립적인 프로세스끼리 작업을 하다 서로 데이터를 주고받아야 할 때 통신을 하는 경우, 누가 먼저 작업을 할지, 작업이 언제 끝날지 등을 서로 알려주어야 하는 동기화 같은 데이터를 여러 프로세스가 사용할 때 서로 침범하면 안되는 임계구역 문제 해결 1. 프로세스 간 통신 병행 프로세스의 개념 병행 프로세스(Concurrent Process) 종류 독립 프로세스 - 단일 처리 시스템에서 수행하는 병행 프로세스, 다른 프로세스에 영향을 주고받지 않으면서 독립 실행 협력 프로세스 다른 프로세스와 상호작용(통신)하며 특정 기능을 수행하는 비동기적 프로세스 제한된 컴퓨터 자원의 효율성 증대, 계산 속도 향상, 모듈적 구성 강화, 개별 사용자의 여러 작업을 동시에 수행하여 편의성 제공에 사용됨 병행 프로..
연습문제 시스템 내 전체 프로세스의 주를 조절하는 것으로, 장기 스케줄링 또는 작업 스케줄링이라 불리는 스케줄링 수준은 무엇인가? 고수준 스케줄링 어떤 프로세스에 CPU를 할당하고 어떤 프로세스를 대기 상태로 보낼지 등을 결정하는 스케줄링 수준은 무엇인가? 저수준 스케줄링 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 뺴앗을 수 있는 스케줄링은 무엇인가? 선점형 스케줄링 현재 입출력을 진행하는 프로세스로, 사용자와 상호작용이 가능하여 상호작용 프로세스라고도 불리는 것은 무엇인가? 전면 프로세스 준비 큐에 도착한 순서대로 CPU를 할당받는 비선점형 스케줄링 알고리즘은 무엇인가? FCFS(First Come First Served) 스케줄링 준비 큐에 있는 프로세스 중 실행 시..

1. 스케줄링의 개요 CPU 스케줄러 : 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원의 배정을 결정 스케줄링의 단계 고수준 스케줄링(high-level, long-term, job scheduling) 전체 시스템 부하를 고려하여 전체 작업 수를 조절하는 것 작업(1개 또는 여러 개의 프로세스)을 수용할지 거부할지를 결정 → 승인 스케줄링(admission scheduling) → 멀티 프로그래밍 정도(degree of multiprogramming) 메인 프레임과 같은 큰 시스템에서 규모가 큰 일괄 작업을 처리할 때 사용 저수준 스케줄링(low-level, short-term scheduling) 어떤 프로레스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정 → 단기 스케줄..

연습 문제 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가? 운영체제로부터 프로세스 제어 블록을 얻어야 함 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가? 준비 상태 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는 무엇인가? 대기 상태 - 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될때까지 기다리는 상태 (wait status) 유닉스에서 Ctrl + Z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가? 휴식 상태 - 프로그램이 잠시 실행을 멈춘 상태 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라고 하는가? 문맥 교환 - CPU를 차지하던 프로세스가 나가고, 새로운 프로세스를 받아들이는 작..

1. 프로세스의 개념 프로그램: 저장장치에 저장되어 있는 정적인 상태 프로세스(process): 실행을 위해 메모리에 올라온 동적인 상태, 실행중인 프로그램 exe 실행 파일(바이너리 파일) → 실행되어 메모리에 적재되면 ‘프로세스’가 됨 비동기적(asynchronous) 행위 운영체제에 들어있는 프로세스 제어블록이 생성됨 프로세서(CPU)에 할당하여 실행할 수 있는 개체 디스패치가 가능한 대상 프로세스를 처리할 때는, 일괄 방식이 아닌 시분할 방식을 사용하여 시간을 배분함으로써 시스템의 효율을 높인다. 프로세스와 메모리 프로그램에서 프로세스로의 전환 프로세스 제어 블록(PCB, Process Control Block) OS가 해당 프로세스를 위해 관리하는 자료구조 (Linked List 기반) 프로세스..