본문 바로가기

전체 글154

[백준] 1202(보석 도둑) 파이썬 문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다. 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000) 모든 숫자는 양의 정수이다. 출력 첫째 줄에 상덕이가 훔칠 수 있는 .. 2021. 1. 27.
[백준] 2437(저울) 파이썬 문제 문제 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다. 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오. 예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력 첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 둘째 줄에는 저울추의 무게를 나.. 2021. 1. 27.
[자료구조] 2주차 - 배열 (Array) List 리스트의 정의 유일한 원소들의 나열 각 원소들은 인덱스에 대응됨 List의 구현에는 Array와 Linked list가 있음 배열 (Array) : 메모리에 배열의 크기보다 더 큰 공간이 허용 될 때 사용 연결 리스트 (Linked list) : 연속된 공간이 없어도 사용 가능 Array 리스트를 index를 이용해서 구현한 구조 연속적으로 할당된 기억 공간 모든 언어에서 기본적으로 제공 모든 원소들이 index에 대응 n개의 자료를 하나의 주소로 접근 가능 기본 연산 - 생성(create), 인출(retrieve), 저장(store) 추가 연산 - 검색(search), 추가(insert), 제거(delete), ··· 검색(Search) 찾는 원소(key element)가 배열에 있는지 여부를.. 2021. 1. 26.
[자료구조] 1주차 - Analisys Analysis 성능이란 무엇인가 좋은 자료구조 - 정답을 출력, 요구하는 자원이 최소 성능(performance) 또는 효율(efficiency) = solution/resource 성능의 세가지 측면 - 최선 / 평균 / 최악 (보장의 의미) 공간 복잡도와 시간 복잡도 점근적 분석법 시간 복잡도는 매우 큰 입력에 대해서 측정 g(n)을 이용한 f(n)의 성능 표현 g(n)은 f(n)보다 시간이 더 걸림 : g(n) ≥ f(n) g(n)은 f(n)보다 성능이 나쁨 : g(n) is the worst case of f(n) 최악의 경우에도 f(n)은 g(n)보다 좋음 : In the worst case, f(n) is better than g(n) f(n)의 상한은 g(n)임 : The upper bou.. 2021. 1. 25.
[Node.js] socket.io로 채팅 서버 만들기 1 - 웹 소켓 연결 익스프레스로 채팅 서버를 만들어보겠습니다. socket.io 모듈을 사용해서 빠르게 구현할 수 있습니다. 목차 웹 소켓이란 채팅서버 작동 방식 서버에서 socket.io 연결 클라이언트에서 socket.io 연결 웹 소켓이란 웹소켓은 HTML5 표준 기술로, 사용자의 브라우저와 서버 사이의 동적인 양방향 연결 채널을 구성합니다. 그러나 웹소켓은 HTML5의 기술이기 때문에 오래된 버전의 웹 브라우저는 웹소켓을 지원하지 않습니다. Socket.io는 자바스크립트를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술입니다. 채팅서버 작동방식 socket.io는 서버와 클라이언트 양쪽에서 모두 따로 사용하며 서버용 socket.io와 클라이언트용 socket.io는 서로 다릅니다. 채팅 .. 2021. 1. 25.
[운영체제] 가상 메모리 (Virtual memory) Virtual memory프로그램을 당장 실행에 필요한 부분만 실제 메모리에 올려서 실행프로그래머는 메모리 크기 제약에서 자유로워질 수 있음논리 메모리 개념을 통해 엄청나게 큰 메모리 구성 가능구현이 어려움잘못 사용하면 성능 저하가 심함시스템이 멈춰 버릴 수도...MMU(Memory Management Unit)가상 주소를 물리 주소로 빠르게 맵핑Demand PagingValid-Invalid Bitpage fault : i인 프레임에 접근하는 경우아예 참조할 수 없는 경우abort메모리에 없을 뿐인 경우메모리에서 비어있는 프레임을 찾음찾은 페이지를 프레임으로 swap in페이지 테이블에서 i를 v로 바꿈이전 프레임으로 돌아가 재실행pure demand paging : 프로그램을 처음 시작할 때 부터 p.. 2021. 1. 22.
[Node.js] socket.io require 에러 해결법 채팅 서버를 만들기위해 socket.io 모듈을 설치하고 require로 모듈을 불러왔는데, 실행이 되지 않았습니다. SyntaxError: Unexpected identifier 문법 오류란 문구 말곤 별다른 에러 문구가 없어서 헤매다가 공식 문서를 보니 Node.js에서는 import를 사용하여 모듈을 불러올 수 있다고합니다. 아무래도 버전이 업그레이드 되면서 기존의 require을 사용하는 방법이 사라진 것 같았습니다. (기존 자바스크립트가 지원하던 require과 다르게 import 는 ES6의 사양으로 모듈을 불러오는 방법으로, 후자를 사용하도록 업데이트가 된거 같습니다.) 해결 socket.io 1.7.x 버전을 사용하면 require로 모듈을 불러올 수 있습니다. % npm install s.. 2021. 1. 22.
[Node.js] 모듈화 방법 - exports, module.exports 목차 exports로 모듈화 하기 module.exports로 모듈화 하기 exports로 모듈화 하기 (추천하지 않는 방법) exports 객체 속성으로 함수 또는 객체를 추가할 수 있습니다. // exports 객체 속성으로 함수 추가 exports.getUser = function(){ return {id : 'test01', name : '짱구'}; }; // exports 객체 속성으로 객체 추가 exports.group = {id : 'group01', name : '친구'}; user1.js 추가한 모듈을 require로 불러와 사용할 수 있습니다. // require() 메소드는 exports 객체를 반환함 var user1 = require('./user1')); console.log(u.. 2021. 1. 22.