해시함수와 적용
카테고리 없음 2023. 5. 12. 10:50

해시함수를 이용한 비밀번호 저장 및 비교 서비스 DB의 보안성을 보장할 수 없기 때문에, 해시함수를 이용해 비밀번호를 해시화해서 비교해야한다. 적용 알고리즘: 해시함수 알고리즘 개요 2.1. 해시 함수란? 해시 알고리즘이란 어떤 문자열 x가 해시함수 h(x)를 통해 해시화 된 fixed length의 y의 문자열을 만드는 알고리즘을 말한다. 암호화 해시 함수를 사용해서 비밀번호의 무결성과 보안성을 지킬 수 있다. 해시함수의 성질은 다음과 같다. Properties of Cryptographic Hash Functions (암호화 해시함수의 성질) Compression (압축) - 해시 함숫값(출력)의 크기는 평문(입력)의 크기보다 작다. Efficiency (효율성) - 해시 함숫값은 빠르게 계산된다. ..

백준 17471 (Java) 게리맨더링
PS/BOJ 2023. 2. 28. 17:12

자세한 풀이: 주석 참고 두 구획에 따른 가중치의 차이는 없으므로 부분집합의 원소의 수가 1이상 n/2 이하인 조합을 고른다. 고른 조합 두개가 나오면, 각각의 조합(red, blue) 에 대해 union-find를 진행한다. 이때 같은 색에 포함되며 인접해있다면 union을 진행한다. 모든 union이 완료되면 각 노드에 대해 탐색을 진행한다. 1. 모두 방문할 수 있는지, 2. 방문했을 때 색이 같다면(union 되어있다면) 같은 부모에 포함되었는지 검사한다. package com; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public cla..

백준 1992 (Java) 쿼드트리
PS/BOJ 2023. 2. 21. 11:00

입력 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또는 1의 숫자로 이루어져 있으며, 영상의 각 점들을 나타낸다. 출력 영상을 압축한 결과를 출력한다. 예제 입력 1 복사 8 11110000 11110000 00011100 00011100 11110000 11110000 11110011 11110011 예제 출력 1 복사 ((110(0101))(0010)1(0001)) 해설 size가 2가 될때까지 분할정복을 진행한다. 2가 되었다면 네칸의 합이 4인 경우와 0인 경우는 각각 모든 수가 같은 경우이다. 4또는 0이 아닌 경우는 네칸의 수가 다른 ..

백준 11728 (Java) 배열 합치기
카테고리 없음 2023. 2. 20. 12:25

정렬된 두 배열이 들어오므로, 매번 두 배열을 비교하며 앞에서부터 작은 배열의 값을 넣어주면 된다. import java.io.*; import java.lang.reflect.Parameter; import java.util.*; public class Main { static int n, m; static int[] arrA; static int[] arrB; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWrit..

백준 1753 (Java) 최단 경로
PS/BOJ 2023. 2. 17. 10:56

문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 출력 ..

백준 18352 (Java) 특정 거리의 도시 찾기
PS/BOJ 2023. 2. 16. 12:10

풀이 c++ 에선 pair형이더라도 pq에서 pair first, second순으로 정렬이 되는데에 반해, 자바는 그렇지 않다. 따라서 1. Pair class를 선언해 Pair를 정렬할 수 있는 compareTo를 오버라이딩 2. 오름차순 정렬이 되도록 compareTo를 오버라이딩 하였다. 장점으로, 음수화하여 정렬했다가 다시 꺼낼 때 양수화하는 과정이 없어서 코드 작성자의 의도에 맞는 코드를 짤 수 있어 조금이나마 가독성이 좋아졌다고 생각한다. 코드 import java.io.*; import java.lang.reflect.Parameter; import java.util.*; public class Main { static class Pair implements Comparable { int c..

백준 16935 (Java) 배열 돌리기 3
PS/BOJ 2023. 2. 15. 17:36

https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 와우 진짜 너무 빡세서 나의 ADHD와의 싸움을 또 해냈다. 각 cmd (명령어 == 커맨드) 별로 함수를 하나씩 만들고 실행하도록 했다. 90도 회전의 경우 가로길이와 세로길이가 서로 바뀌기 때문에, 명령어 실행 중에 복잡해지는 것을 피하기 위해 얕은 복사로 2차원 배열이 계속 반환될 수 있게 했다. 그리고 cmd함수의..

ts-jest 설치 안되는 현상: network Invalid response body while trying to fetch https://registry.npmjs.org/ts-jest: aborted
Node.js 2023. 2. 15. 10:09

https://velog.io/@librarian/ts-jest-%EC%84%A4%EC%B9%98-%EC%95%88%EB%90%98%EB%8A%94-%ED%98%84%EC%83%81 ts-jest 설치 안되는 현상 일단 이렇게 패키지 설치가 안될경우에 패키지의 문제인지 아닌지를 확인하기위해서 스택오버플로우에 검색을 해봤지만 외국인들은 설치가 잘만 되는것 같았다그럼 집에있는 네트워크가 문제 velog.io 이 글을 보고 해결했다. 현재 내 개인 pc가 아닌 데스크톱에 git clone하고 npm i하려는데, 너무 오래걸리고, 된다한들 아래와 같은 에러가 떴다. PS C:\> npm i npm ERR! code ECONNRESET npm ERR! errno ECONNRESET npm ERR! network ..

How does Bitcoin work?
Blockchain 2023. 2. 13. 23:27

비트코인이란? 비트코인은 프로토콜의 묶음이다. : 이는 비트코인이라는 암호화폐를 규정하는 규칙이다. 비트코인 프로토콜이 동작하도록 구현한 sw가 있다. sw가 실행이 되면, 코인이 생성되고 한 계정에서 다른 계정으로 보낼 수 있다. 비트코인 계좌이체(주소 이동)을 transaction, 트랜잭션이라 한다. 이러한 transaction이 모여서 block이 생성된다. 한 블락 당 여러개의 트랜잭션 요약: 비트코인 프로토콜은 비트코인 코드가 sw에 의해 실행되어 transaction을 만들어내는 것. 지불 시스템이 검열되지 않도록 하는 것이 사토시 나카모토의 의도였다. 즉, payments가 직접적으로 (벤더를 거치지 않고) 되는 것이 핵심이다. 탈중앙화 De-centralization vs Centrali..

Blockchain Overview & Introduction
Blockchain 2023. 2. 13. 23:17

비트코인의 탄생 2008, 리만 브라더스 사태 중앙은행은 법정 통화 가치에 논쟁의 여지가 없도록 신뢰를 받아야 하지만, 화폐의 역사는 그런 신뢰를 완전히 저버린 사례로 가득하다. 은행은 우리의 돈을 안전하게 보관해야 하지만, 그들은 무분별한 대출로 신용버블을 유발했다. 블록체인이란? Linked List - 다수의 - 분산된 - Consensus에 의해 유지되는 - 암호학적으로 연결된 - 암호학적으로 데이터 무결성을 보장 사용 - 불변하는, 사건들을 기록하는 장부 - 변조 저항성 - 암호화폐를 생성하고 tx을 기록하기 위한 플랫폼 - 화폐와 무관하게 사건, tx를 기록하기 위한 log로도 가능 Trust anchor 현재의 금융 시스템은 Ledger를 은행이 관리한다. 즉, 우리는 은행의 선의에 기댈 수..