본문 바로가기

전체 글412

2302 극장 좌석 123456789101112131415161718192021222324252627282930313233343536373839404142#include int main() { int total, n; scanf("%d %d", &total, &n); int len_num[50] = { 0 }, bef = 1; while (n--) { int cur; scanf("%d", &cur); int len = cur - bef; len_num[len]++; bef = cur+1; } len_num[total - bef + 1]++; int maxV = -1; for(int i=40;i>0;i--) if (len_num[i] > 0) { maxV = i; break; } int dp[50] = { 0 }; dp[1].. 2020. 2. 28.
11066 파일합치기 12345678910111213141516171819202122232425262728293031323334353637#include int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); int dp[501][501] = { 0 }; int sum[501] = { 0 }; for (int i = 1; i 2020. 2. 28.
11052 카드 구매하기 1234567891011121314151617181920212223242526#include #include using namespace std; int main() { int n; scanf("%d", &n); vector arr(n + 1, 0); vector dp(n + 1, 0); for (int i = 1; i 2020. 2. 27.
암호화폐의 해싱 # 해싱 - 해싱의 장점 1) 어떤 입력값에도, 고정된 길이의 해시값 출력ex) "안녕" -> z1x2c3 "안녕하세요 제 이름은 김상윤입니다" -> f4g5h6>> 두 개의 입력값에 대한 해시 값 길이는 일치한다 2) 눈사태 효과 : 입력값이 조금만 달라져도 전혀 다른 결과물이 나온다ex) "hello" -> q1w2e3, "hello?" -> a4s5d6 3) (눈사태 효과때문에) 따라서, 해시 값을 이용해서 입력값을 추측하는 것이 불가능하다 - 해싱 충돌 가능성? - 아~주 희박 - 해싱의 성능 : 충돌의 발생 가능성이 적을수록, 좋은 해싱 함수다! # 암호화 해시 함수cryptographic hash function - 다음의 세 가지 조건을 만족시키는 해시 함수를 의미 : 1) 역상 저항성(pr.. 2020. 2. 27.
채굴이란? # 채굴이라 불리는 이유? - 일반 화폐의 발행 주체 : 중앙 정부 - 암호화폐의 발행 주체 : 개인 - 방법 : 1) 개인이 직접 컴퓨터를 돌려서, 해싱을 수행 2) 올바른 값을 구해낼때까지 계속 해싱 3) 올바른 값을 구해냈다면, 그제서야 개인이 해당 화폐를 얻는다 - 의의 : 금광에서 금을 직접 캐내듯, "개인" 이 직접 암호화폐 "금광"으로 가서 암호화폐를 "채굴"한다>> 이런 의미에서 암호화폐 "채굴" 이라는 방식으로 불림 # 채굴의 양상 : 1) 초기에는 개인이 채굴 : 속도는 매우 느렸으나, 대부분의 다른 사람들도 개인 컴퓨터로 채굴했기에 경쟁이 약함 2) 그래픽 카드의 등장 : 성능 좋은 컴퓨터들로 채굴을 하면서, 속도가 매우 빨라짐 3) ASIC 의 등장 : 더 좋은 성능의, 오직 채굴만.. 2020. 2. 27.
채굴의 구체적 과정 # 채굴의 구체적 과정 1) 블록체인 구조 (블록 바디, 블록 헤더) 중, 블록헤더를 보자2) 블록 헤더의 여러 내용물들은 그대로 주어지되, "논스(nonce)" 값만 비어있는 상태로 채굴 희망자들에게 "빈 블록"이 주어진다3) 채굴자들은, 빈 블록 안에 임의의 nonce 들을 하나씩 넣어가며, 그때마다 "블록 해시" 값을 구해낸다 > 블록해시 : 블록 헤더의 6가지 값들을 합산해서 해싱한 결괏값이다4) 이때의 블록 해시 값이, target 값보다 작을경우, "문제를 해결했다" 고 지칭한다 > target 값은 자율적으로 조정되는 값이지 않을까 싶다 (비트코인의 경우, 시간이 지날수록 난이도를 조절한다는 부분에서 추측했음)5) 따라서, 문제를 해결한 경우엔, 해당 채굴자에게 블록이 주어진다. (논스가 채.. 2020. 2. 27.
합의 알고리즘 # 합의 알고리즘 - 의의 : 1) 탈중앙화 된 공간이 있다고 하자. 이때, 각 개인간의 통신은 P2P 방식에 의존한다. 2) 그러다 한 개인이 특정 값을 수정한다거나, 새로운 사람이 해당 공간에 들어온다고 했을때, 혹은 두 사람이 경쟁해서 동시에 공간에 들어오게 됐을때 누구를 선택할 것인지 등 -> 이때의 의사 결정은 어떻게 할 것인가? 3) 중앙 정부가 없기 때문에, 모든 개인들이 P2P 방식을 통해 의사 결정에 참여해야 하는 상황이다 4) 이를 위한 알고리즘 = "합의 알고리즘" - 용도 : (어떤 블록이 진짜 블록인가?) 를 결정하기 위해 합의할때, 사용하는 알고리즘 - 이 알고리즘의 종류에 따라, 어떤 식으로 사람들이 채굴할 것인지를 결정한다 (채굴 방식) - 대표적 종류 : 1) PoW (Pr.. 2020. 2. 27.
암호화폐 지갑 # 암호화폐 지갑 정의/의의 > 의의 : - 거래하고 있는 암호화폐가 다양하거나, 소유하고 있는 블록들이 여러개인 경우 -> 일일이 공개키/보안키를 관리하는게 어려움 - 공개키/보안키 를 한꺼번에 들고 있으면 편하지 않을까?> 이 발상에 기초해서 암호화폐 지갑 개발됨. > 정의 : 공개키/보안키를 넣어 다닐 수 있는, 사실상 "열쇠 지갑" # 암호화폐 지갑의 한계 > 현재 기술 : 공개키/보안키 를 모음집 형식으로 들고다닐 수 있는 기본적인 상황.> 여러 기업들이 암호화폐 지갑 개발에 투자하고 있음 > 한계 : 1) 보안의 취약성 :- 암호화폐 각각의 보안 자체는 압도적으로 안전하고, 해킹이 거의 불가능- 그러나, "금고" 역할을 하는 블록 자체가 안전하더라도, "열쇠" 역할을 하는 암호화폐 지갑 (또는.. 2020. 2. 27.
블록 체인의 구조 # 블록체인의 구조 - 큰 틀에서의 구조 : 1) 블록 해시 : 블록 헤더에 있는 내용들을 모두 합산한 값 -> SHA-1 해싱을 한 결괏값> 역할 : 블록의 "식별자" 2) 블록 헤더 : 버전, 이전 블록 해시, 머클 루트 값, 타임, 난이도 목표, 논스 (6가지) 로 구성>1. 이전 블록 해시 : 이전 블록의 주솟값 ** 블록 해시와 헷갈리면 안된다!! 블록 해시는 "지금 이 블록의" 블록 주소를 의미하며, 이전 블록 해시는 "이전 블록의" 블록 주소를 의미한다>> 실제로 블록들을 하나의 "체인"처럼 연결해주는건 바로 이 부분때문이다. >2. 머클 루트 : 블록 바디에 있는 트랜잭션들의 해싱 트리- 의의 : 트랜잭션/블록 해시 의 무결성 증명 가능 3) 블록 바디 : 트랜잭션들로 구성 (1번째~N번째.. 2020. 2. 27.
남자 여자 판독기 - CNN 모델 이번에는 남녀 판독기를 만들어보았다.정확도 부분에서 좀 아쉽다.왜 실제 이미지에서는 제대로 힘을 발휘하지 못하는지.. 아쉽다 123456789101112131415161718192021222324# 데이터를 담을 list 선언 train_data = [] # trainning data set 을 만드는 함수 정의import cv2 import numpy as np def make_train_set(sex, root, file_type, num_img): for idx in range(1, num_img): if idx 2020. 2. 25.
1057 토너먼트 1234567891011121314151617181920212223242526272829303132#include #include int main() { int n, a, b; scanf("%d %d %d", &n, &a, &b); if (a > b) { int tmp = a; a = b; b = tmp; } int two = 1, cnt = 1; while (1) { int tmpA = a / two; if (a % two > 0) tmpA++; int tmpB = b / two; if (b % two > 0) tmpB++; if ((tmpA + 1 == tmpB) && (tmpB % 2 == 0)) { printf("%d", cnt); break; } two *= 2; cnt++; }}Colored .. 2020. 2. 22.
합성곱 신경망 - 딥러닝을 이용한 자연어처리 입문 CNN : 합성곱 신경망 - Convolutional Neural Network # CNN 기본 개념 - 구조 : 합성곱층(Conv. layer) + 풀링층(Pooling) 1) 합성곱층 : 합성곱(Conv) 단계 + 렐루(Relu) 단계 2) 풀링층 : 풀링 연산 진행 - 필요성 : 이전의 다층 퍼셉트론 종류의 한계 때문 ** 다층 퍼셉트론 : 은닉층이 여러 개 있는 머신러닝 기본 모델 - CNN 도 다층 퍼셉트론의 한 종류. 여러 개의 Dense 레이어들로 구성된 것도 다층 퍼셉트론의 종류. - 이전 다층 퍼셉트론 (Dense 층 등) 의 한계 : 3D -> 2D 전처리를 반드시 해야 함** (batch, width, height) 의 3차원 텐서를 입력값으로 받을 경우, 반드시 (batch, w *.. 2020. 2. 21.