[C++]optional
·
Language/C C++
[C++]optional [C++]optionalC++17의 표준으로 optional이 도입되었다. 이전에 자바 스프링 개발을 할 때도 본적이 있었는데 C++에서 보니 반갑다. 자바는 jdk1.8부터 optional 지원이 된것으로 알고있다. 그러면 이 optional은 무엇일까?함수를 작성하는 예시를 들어보자. 두 INT값을 나누어 결과를 반환하는 함수를 작성하려고 한다.double divide(int a, int b) { return (double)a / b;}만일 이 함수에 인자 b에 0이 주어진다면 exception이 발생할 것이다. 따라서 b == 0일 경우 실패했다는 결과값을 반환해야 한다. xxxxxxxxxxdouble divide(int a, int b) { if (b == 0) { //f..
아이템선택
·
Language/C C++
아이템 선택x#include#include#include#include#include​using namespace std;​struct Table{ struct Item { int id; int weight; };​ vector table;};​int select(const Table& table, int w) { int randomNum = rand() % (w + 1);​ int sum = 0; for (auto it : table.table) { sum += it.weight; if (randomNum
[알고리즘]배열의 부분 최대합
·
PS/기타
[알고리즘]배열의 부분 최대합주어진 배열에서 연속된 구간 중 합이 최대가 되는 곳을 찾는 문제이다. 다음과 같이 재열이 주어졌을 때, 2 ~ 4 구간의 합이 11로 최대값을 가진다. 이를 찾기 위한 첫 번째 방법은 배열을 순회하며 모든 구간의 합을 구하여 최대값을 찾는 것이다. 이를 코드로 표현하면 다음과 같다.xxxxxxxxxxint sol1(const vector& arr){ int max = INT_MIN; for (int i = 0; i = end) return arr[start];​ int mid = (start + end) / 2;​ //중앙에 걸친 부분합을 구한다. int sum = 0; int left = INT_MIN; for (int i = mid; i >= start; i--) { s..
Express 모듈 설치
·
기타/node.js
Express 모듈 express 모듈은 node.js에서 웹 서버를 개발할 때 가장 많이 사용하는 모듈이다. node.js에서 제공하는 http 모듈보다 더 많은 기능을 제공해 준다. 외부 모듈이기 때문에 설치가 필요하다. $ sudo npm install express 설치를 완료하면 express 모듈로 서버를 생성할 수 있다. 다음은 서버 생성 및 실행하는 예제 코드이다. //extract module var express = require('express'); //create server var app = express(); //setting request event listener app.use(function(request, response){ response.writeHead(200, {'..
[Python] 가상환경 만들기
·
Language/Python
[python]가상환경만들기 [Python] 가상환경 만들기파이썬으로 개발할 때 여러 패키지를 설치하여 진행한다. 하지만 패키지간 충돌이 발생할 수 있기 때문에 각 프로젝트별로 독립된 환경이 필요하다. 그렇기 때문에 가상환경을 제공해주는 virtualenv라는 패키지를 사용한다.설치(ubuntu16.04)먼저 파이썬 패키지 설치를 쉽게 해주는 pip를 설치한다.$ sudo apt-get install curl ##curl이 없어서 설치했음$ curl https://bootstrap.pypa.io/get-pip.py > getpip.py$ sudo python getpip.py 이후 pip를 통해 virtualenv를 설치하면 된다.xxxxxxxxxx$ sudo pip install virtualenv 사..
중복 없는 난수 생성
·
Language/C C++
중복없는난수생성 난수생성함수 랜덤한 수 즉 난수를 생성하기 위해서는 rand함수를 사용한다. xxxxxxxxxx#include#include //rand()#define SIZE 5int main (){ for(int i = 0 ; i
정렬
·
Language/C C++
정렬 정렬정렬이란 사용자가 원하는 순서대로 원소들을 배치하는 것이다. 정렬을 할 수 있는 자료구조에는 배열, 리스트, 그래프가 있다. 정렬은 종류에 따라 속도의 차이가 있다. 아래의 영상을 보면 각각의 정렬 알고리즘들이 정렬을 하는데 걸리는 속도를 한눈에 볼 수 있다.@동영상오늘 우리는 속도가 N^2인 정렬 알고리즘을 공부할 것이다. 먼저 버블정렬을 살펴보자. 버블정렬은 인접한 두 원소를 비교해 나가면서 가장 큰 원소를 뒤로보내는 정렬은 해나가는 정렬이다. 이 때 작업을 n-1번 반복하는데 이유는 n-1번째에는 n번째 역시 정렬되있기 때문이다.xxxxxxxxxxvoid BubbleSort(int* arr, int size){ int i, j; int temp; for( i = 0 ; i
시간 측정
·
Language/C C++
시간측정방법 어느 정렬이 얼마나 빠른지 알고싶다. 프로그램 내에서 시간이 얼마나 지나는지 측정하는데 clock함수를 사용한다. clock 함수는 호출된 시점의 시간을 반환하는 함수이다. 우리를 이를 이용하여 시간측정을 할 수 있다. clock 함수로 시작시간을 구하고연산이 끝난뒤 다시 clock함수를 호출한다.2에서 1을 빼면 얼마나 시간이 지났는지 측정할 수 있다.#include#include // clock()int main (){ double start = clock(); // 측정시작 /*************/ /* 연산내용 */ /*************/ double end = (clock()-s) / CLOCKS_PER_SEC; //초 단위로 표시하기 위해 CLOCKS_PER_SEC을 나누..