본문 바로가기

전체 글

(79)
[OS] 책 설명이 x같아서 내가 쉽게 쓴 B 트리 파일 처리 시험 공부를 하다가 너무 말이 어려워서 저만의 방식으로 다시 정리해봤습니다. 왜 말을 그렇게 어렵게 쓰는지... 일단 B트리가 뭔지 알아보자. ●B 트리 개요 (1) B 트리의 정의 : B 트리는 데이터를 정렬하여 탐색, 삽입, 삭제 및 순차 접근이 가능하도록 유지하는 트리형 자료구조 이다. 그냥 한 마디로 데이터를 쉽게 다룰 수 있게 하는 자료 구조의 일종이다. 그렇다면 왜 B 트리를 쓰는가 ? B 트리는 Balanced- Tree 의 일종으로 트리의 균형이 맞다. 즉 트리내에서 삽입과 삭제가 일어나더라도 최대한 균형있는 트리 형태를 유지하여 이진 탐색의 장점을 살린 트리다. 균형이 맞춰진 트리의 장점이 뭘까? 바로 이진 탐색을 활용할 수 있다는 점이다. 아래는 편향 트리이다. 편향 트리란 ..
삼성 S/W expert 2115번 벌꿀 채취 2115번 벌꿀 채취- N*N 크기의 map에 벌꿀의 양이 각각 들어가 있다. 2명의 사람이 벌꿀을 채취하는데 벌꿀을 가로 형태로만 채취할 수 있고 주어진 통의 갯수만큼만 채취 가능하다. 예를 들어 M=2 이면 {(0,0), (0,1)} 칸의 벌꿀을 채취할 수 있다. 채취한 벌꿀을 제곱하고 더해 Profit을 계산할 수 있다. 8, 9를 채취했다면 64+81 = 145 가 Profit이 된다. 여기서 최대로 채취할 수 있는 벌꿀의 양이 주어진다. 2명의 사람이 영역을 겹치지 않고 벌꿀을 채취했을 때 가장 큰 Profit을 구하는 문제다. - 우선 2명의 사람이 겹치지 않게 영역을 나눴고, 최대 이익을 산출하기 위해 비트 마스킹으로 나올 수 있는 모든 이익을 계산했다. 12345678910111213141..
삼성 S/W expert 2117번 홈 방범 서비스 2117번 홈 방범 서비스 - K가 1부터 증가하며 마름모 형태로 방범 서비스를 할 수 있는 구역이 점차 넓어진다. 서비스 범위가 넓어질 수록 드는 비용이 증가한다. 각 가구가 지불 할 수 있는 금액을 M 이라고 했을 때, (가구수 * 지불할 수 있는 비용) - (서비스 비용) 이 손해가 나지 않는, 즉 음수가 되지 않는 선에서 서비스할 수 있는 최대 가구수를 묻는 문제이다. 각 위치마다 전체 맵을 모두 탐색할 수 있을 만큼 K의 크기가 증가하며 bfs를 돌았다. 가구수를 따로 체크해주면서 최대 가구수를 계속 갱신하는 식으로 구현했다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152..
삼성 S/W expert 2382번 미생물 격리 2382번 미생물 격리 문제 - 2차원 배열인 map을 2개 선언해서 움직일 때마다 미생물의 움직임을 배열에 번갈아가면서 저장하고 나중에 모든 미생물의 갯수를 출력했다. 코드가 너무 더러워서 이렇게 풀고 싶지 않다. 다른 방법을 찾아봐야겠다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231..
[OS] 페이징 알고리즘에 대해 알아보자 이번년도에 꼭 취업에 성공하려는 취준생으로서 OS 공부를 다시 해야한다고 생각했어요. 주변 지인들과 이미 취업한 친구들로부터 엄청나게 들리는 OS 의 중요성...! 대학교 3학년데 OS 과목을 수강했지만 재미와 흥미가 떨어져서 그런지 머리속에 남는 게 많이 없었어요. 4학년 1학기 시스템 성능 분석 과목에서 페이징 알고리즘에 대해 발표를 할 기회가 있어서 이 기회에 다시 정리해보려고 합니다. - 페이지 부재(Page fault)란? : 메모리에 적재된 페이지 중에 사용 페이지가 없을 때를 가리킨다. 시스템의 종류에 따라 약간 다를 수 있으나, 대체로는 빈 페이지가 하나도 없거나, 미리 정한 수보다 적을 때 발생한다. - 지역성(Locality)란? : 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부..
Node.js Intro 1. 노드란 무엇일까? 노드(Node.js)는 자바스크립트를 이용해서 서버를 만들 수 있는 개발 도구입니다. 이미 기존에 존재하는 웹 서비스 같은 서버를 만들 수 있는 언어나 도구들이 많은데, 왜 노드(Node.js)라는 새로운 개발 도구를 만든 걸까요? 2009년 라이언 달(Ryan Dahl) 이란 시람이 웹 서버에 파일을 업로드할 때, 업로드가 완료되기 전까지 웹 서버에서 데이터를 조회하는 등 다른 업무를 전혀 할 수 없었습니다. 이 문제를 해결하기 우해 새로운 방식의 서버 개발 도구를 만들기 시작했는데 그것이 Node.js 입니다. (지금은 노드를 꼭 쓰지 않아도 해결할 수 있는 방안들이 많이 나와있다고 하네요.) Node.js 는 이런 문제를 해결하기 위해 비동기 입출력(논블로킹 입출력, Non-..
JavaScript INTRO 1. 자바스크립트 소개- 객체 기반의 스크립트 프로그래밍 언어로, 주로 웹 개발에 많이 사용되는 것으로 알려졌지만, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능도 가지고 있기 때문에 응용 범위가 무궁무진하다. Node.js 또한 자바스크립트를 품은 개발 플랫폼이다. 2. 자바스크립트의 특징 ① 동적 형변환 var i =1;var ch ='a';console.log(i+ch); //1ach=1;console.log(i+ch); //2 ② 프로토타입 기반 객체지향(Prototypal Object-Oriented) 자바스크립트는 프로토타입 기반 객체지향 언어이다. 객체를 생성할 때 클래스로부터 그 내용을 상속받아서 객체를 만드는 것이 아니라 객체로부터 그 특성을 복제하여 새로운 객체를 생성하기 때..