[2156] 포도주 시식
·
PS/백준
문제 링크 배열에서 아래와 같은 규칙에 따라 수를 선택했을 때 최대값을 찾는 문제이다.포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다.연속으로 놓여 있는 3잔을 모두 마실 수는 없다.2번 조건에서의 연속으로 3잔을 모두 마실 수 없다는 것이 중요하다.예시 입력은 6, 10, 13, 9, 8, 1이 주어졌다. 이를 배열로 표현하면 아래와 같다.개발 편의상 배열의 크기를 N+1로 설정했다.dp 배열을 만들어서 i번째 까지 선택한 값의 최대값을 저장한다.dp 배열의 i번째 원소를 업데이트하는 경우의 수는 다음과 같다.i-1과 i를 선택했을 경우i와 i-2를 선택했을 경우i를 선택하지 않을 경우이 세 조건을 통해 연속으로 3개의 수를 선택하지 않도록..
[C++] 클래스 생성자
·
Language/C C++
클래스의 인스턴스를 생성할 때 반드시 생성자가 호출된다. 생성자를 통해 클래스가 어떻게 생성되는지 살펴보자.암시적 생성자와 명시적 생성자객체를 생성하는 방법은 클래스 내 멤버을 어떤 방식으로 초기화하느냐에 따라 호출되는 생성자가 달라지게 된다. 아래 예시 코드를 통해 알아보려 한다.아래와 같은 Point 클래스를 정의해보았다.x#include class Point{public: int x; int y;​ Point() : x(0), y(0) { printf("Point() called!\n"); }​ Point(int x) : x(x), y(0) { printf("Point(int x(%d)) called!\n", x); }​ Point(int x, int y) : x(x), y(y) { printf("..
[Python] Pyenv
·
Language/Python
보통 파이썬 개발환경을 구축하는데 virtualenv를 사용한다. 프로젝트별 설치 패키지를 분리해서 관리하기 위해서이다. 개발하는데 파이썬 버전이 문제가 되서 새로 설치하려다가 pyenv를 통해 파이썬 버전도 관리할 수 있는 것을 봤다. 이것을 사용해서 프로젝트에 파이썬 버전까지 따로 관리를 할 수 있게 됐다.설치설치는 ubuntu18.04, 16.04 모두 확인했다.설치하기 전에 아래의 패키지들을 설치해야한다. 그래야 pyenv를 정상적으로 사용할 수 있다.xxxxxxxxxx$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm lib..
[13397] 구간 나누기2
·
PS/백준
문제 링크주어진 배열을 M개로 나누었을 때 구간의 점수들의 최댓값의 최솟값을 구하는 문제이다.예를 들어, 배열이 [1, 5, 4, 6, 2, 1, 3, 7] 이고, M = 3인 경우가 있다.이때, [1, 5], [4, 6, 2], [1, 3, 7]로 구간을 나누면 각 구간의 점수는 4, 4, 6점이 된다. 이때, 최댓값은 6점이다.만약, [1, 5, 4], [6, 2, 1], [3, 7]로 구간을 나누었다면, 각 구간의 점수는 4, 5, 4점이 되고, 이때 최댓값은 5점이 된다. 이 문제를 풀기 위해 아래의 방법으로 접근했다.먼저 최솟값을 설정하고, 이 최솟값을 만족하기 위해 배열이 몇 개로 나누어지는지 구한다.나누어진 배열의 갯수가 M보다 크다면 목표 최솟값을 높이고, M보다 작다면 목표 최솟값을 낮춘..
[Python] Visdom
·
Language/Python
시각화를 위한 도구인 visdom 사용법을 간단히 정리했다.설치환경 : windows10 , python3.7 설치pip 명령어를 통해 설치할 수 있다.pip install visom 서버 실행설치를 완료한 다음 아래의 명령어를 실행한다.xxxxxxxxxxpython -m visdom.server위 링크로 접속한다.이런 페이지가 나온다. 사용법xxxxxxxxxximport visdomvis = visdom.Visdom()visdom 을 사용하기 위해 위처럼 선언한다.서버가 켜져 있어야 오류 없이 실행된다. texttext를 통해 문자를 띄울 수 있다. 사용법은 아래와 같다.xxxxxxxxxxvis.text("Hello wolrd", env="main")위 코드를 실행하면 웹 페이지에 텍스트가 생긴 것을 ..
[OpenCV] 설치
·
딥러닝/OpenCV
설치환경Windows10visual studio 2017OpenCV 4.1 설치1. OpenCV 설치아래 링크에 접속하여 설치파일 다운로드링크클릭해서 설치 후 실행하면 압축이 풀리며 아래칸트 파일들 생성압축이 풀린 경로 기억 2. Visual studio 설정opencv를 사용할 새 프로젝트 생성Windows 데스크톱 마법사 선택 후 프로젝트 이름 지정하여 새 프로젝트 생성 빈 프로젝트(E) 체크 후 확인 main.cpp 파일 생성 상단 메뉴바 프로젝트(P) - {프로젝트이름} 속성(P) 클릭 구성(C)를 모든 구성으로 선택 좌측 항목들 중 C/C++ 클릭 후 추가 포함 디렉터리에 {압축을 풀었던 경로}\build\include를 입력C:\opencv4\opencv\build\include 좌측 메뉴에서..
[CUDA] 설치
·
딥러닝
Window 10Visual Studio 2017 드라이버 설치nvidia 드라이버 설치 페이지링크Manual Driver Search에서 자신이 가지고 있는 그래픽카드 버전을 선택해 드라이버 설치파일 다운로드다운로드한 설치파일을 통해 드라이버 설치 CUDA toolkit 설치드라이버 설치 후 CUDA 개발을 위한 toolkit 설치링크자신의 그래픽카드에 맞는 최신버전 설치 모두 정상적으로 설치했을 경우, Visual Studio에서 새 프로젝트 생성 시다음과 같이 NVIDIA 항목이 생성된다.CUDA 10.1 Runtime을 선택하여 프로젝트를 생성 하면 kernel.cu라는 예제 파일이 기본적으로 생성된다. 프로젝트 빌드 후 실행하면 다음과 같이 나온다
[PHP] session
·
Language/PHP
세션(session)은 컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환이며 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 만남을 의미하는 다이얼로그(dialogue)이다.넓은 의미에서의 세션은 클라이언트가 서버에 접속하여 접속을 종료하기까지를 의미한다. HTTP 프로토콜은 stateless의 특성을 가져 클라이언트 측의 정보를 유지할 방법이 없다. 따라서 클라이언트에 대한 정보를 서버측에 저장하여 요청을 보낸 클라이언트를 식별하는 방법을 사용한다. 이 때 서버측에 저장하는 데이터를 세션이라고도 한다.PHP에서도 다른 웹 프로그래밍 언어와 같이 세션을 이용하기 위한 기능을 제공한다. xxxxxxxxxx# session_test.php​# $_SESSION을 사용하기위해서는..