분류 전체보기

    [BaekJoon] 백준 1629번 곱셈

    [BaekJoon] 백준 1629번 곱셈 문제: www.acmicpc.net/problem/1629 내코드 이 문제는 일단 brute force 방식으로 접근하면 O(n) 시간 복잡도로 풀수 있지만 이 경우에 시간 초과가 남 분할 정복 방식으로 풀어야하는 문제: 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법 간단하게 생각하면 a^b mod c를 풀어야 하는 문제 여기서 b=2k+1 일때 a^b = (a^k)^2xa이고 b=2k일때 a^b = (a^k)^2임을 생각해보자 예를 들어 2의 16제곱이면 brute force 방식은 16번 계산해줘야하지만 분할 정복을 하면 2의 8제곱한 결과를 제곱해주면 된다. 즉, 2의 8제곱은 2의 4제곱의 제곱이고, 2의 4제곱은 2의 제곱의 제..

    [OS] 멀티스레딩 & 메모리 공간

    [OS] 멀티스레딩 & 메모리 공간 멀티스레딩이란 하나의 프로세스를 다수의 스레드로 나눠서 작업을 실행하는 것 멀티스레딩 멀티스레딩이란 하나의 프로세스를 다수의 실행 단위인 스레드로 나눠서 작업을 실행하는 것을 말함 장점 메모리 공간과 시스템 자원 소모가 줄어듬 스레드 간의 통신에 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 heap 영역을 이용하여 데이터를 주고 받아 멀티 프로세스(프로세스 여러개로 실행하는 방식, 멀티 프로세스의 경우 IPC와 같은 통신 사용)보다 훨씬 간단 (이전 글: 스레드는 레지스터와 stack만 독립적으로 갖고 나머지는 공유한다) 스레드의 context switch(실행하던 스레드를 멈추고 다른 스레드를 실행 시키면서 실행에 필요한 정보들을..

    [Algorithm] 재귀 (Recursion)

    [Algorithm] 재귀 (Recursion) 재귀(recursion) 란? 재귀로 문제를 푼다는 것은 하나의 함수에서 다시 자기 자신을 호출해 문제를 해결해 나가는 것을 말한다. 자기 자신을 다시 호출할 때, 보통 인자를 더 작게 해주며 호출해주며 인자 or 함수값이 일정 값 이하일때 반복을 종료 해줄 수 있도록 조건을 추가해 준다. 이런 하위 문제를 base condition이라고도 한다. 예를 들어 아래와 같다. #include using namespace std; void recursion(int arg) { cout

    [네이버 FE 인턴 후기] 2020 7-8월 단기 인턴 후기

    2020년 7, 8월 두 달 동안 네이버에서 단기 인턴을 수료하였습니다. 학교 학점인정 프로그램을 통해 얻은 좋은 기회였고, 그만큼 배운 것이 많았던 두 달이었기 때문에 어떻게 인턴 생활이 진행되었는지 회고해보려고 합니다. 목차는 크게 합격 전, 합격 후, 느낀 점으로 진행됩니다. 합격 전 네이버? 네이버는 한국 최대 검색포털 네이버뿐만 아니라, 전 세계 2억 명이 사용하고 있는 모바일 메신저 라인, 동영상 카메라 스노우, 디지털 만화 서비스 네이버 웹툰 등을 서비스하고 있는 글로벌 ICT 기업입니다. 저는 그중에서 편집 도구인 Smart Editor를 개발하는 부서에서 FE 인턴으로 입사하게 되었습니다. 네이버에 지원하게 된 계기 저희 학교의 학점 인정 인턴십은 한 번에 한 회사만 지원할 수 있게 규칙..

    [Node.js] module로 내보내기 / 입력 정보에 대한 보안 / 출력 정보에 대한 보안

    [Node.js] module로 내보내기 / 입력 정보에 대한 보안 / 출력 정보에 대한 보안 module로 내보내는 법 //module file module.exports = 객체; //using module var module = require(경로); 입력 정보에 대한 보안 var path = require('path'); var filteredId = path.parse(queryData.id).base; fs.readFile(`data/${filteredID}`, 'utf8', function(){}... path라는 모듈을 이용해서 path.parse.base를 하면 ../password.js와 같이 경로를 탐색하는 입력값이 들어와도 password.js라는 값만 filteredId에 보내게 ..

    [Node.js] post 방식으로 가져오기 / redirection / File rename / File delete 구현

    [Node.js] post 방식으로 가져오기/ redirection / File rename / File delete 구현 POST 방식으로 가져오는 법 var qs = require('querystring'); //request는 요청들어온 것, response는 요청을 받아서 응답을 한 것 var app = http.createServer(function(request,response){ var body = ''; request.on('data', function(data){ //request로 들어온 정보를 조각조각 잘라서 data라는 인자를 통해서 수신 body += data; //너무 큰 데이터가 들어오면 연결 끊음 if(body.length > 1e6){ request.connection.de..

    [Node.js] console input / 404 not found 출력 / file list 가져오기

    [Node.js] console input / 404 not found 출력 / file list 가져오기 console input 받는 법 var argv = process.argv; console.log(argv[2]); argv[0]과 argv[1]에는 node의 경로, file의 경로가 들어가있다. 따라서 argv[2]부터 입력해준 input 값이 들어가는 것이다. 404 not found 출력하는 방법 var url = require('url'); var app = http.createServer(function(request,response){ var pathname = url.parse(request.url, true).pathname; if(pathname === '/') { ... } e..

    [Node.js] url parse / File read

    [Node.js] url parse / File read url parse하는 법 var url = require('url'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url, true).query; var id = queryData.id; console.log(id); }); url 모듈을 require로 가져온다. _url에 들어있는 ?id=1과 같은 정보를 parse해서 queryData에 담는다. queryData의 정보를 가져온다. File read 하는 법 var fs = require('fs'); fs.readFile('sample.txt',..