전체 글 104

백준 1753 (Java) 최단 경로

문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 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 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 출력 ..

PS/BOJ 2023.02.17

백준 18352 (Java) 특정 거리의 도시 찾기

풀이 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..

PS/BOJ 2023.02.16

백준 16935 (Java) 배열 돌리기 3

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함수의..

PS/BOJ 2023.02.15

ts-jest 설치 안되는 현상: network Invalid response body while trying to fetch https://registry.npmjs.org/ts-jest: aborted

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 ..

Node.js 2023.02.15

How does Bitcoin work?

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

Blockchain 2023.02.13

Blockchain Overview & Introduction

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

Blockchain 2023.02.13

백준 2578 (Java) 빙고

꼼꼼하게 구현이 필요한 문제이다. 현재 입력된 cur를 visit에 체크하여 visit 2차원배열의 값을 1로 바꾼다 그리고 각각 우상대각, 좌상대각, row, column의 개수를 세는 변수를 생성한다. 2중 반복문을 돌려 visit의 합이 5라면, 한줄의 빙고가 완성된 것이다. 우상대각, 좌상대각, row, column의 개수가 3이 되었다면 현재 위치를 출력하고 종료한다. 코드의 아래 주석은 질문 게시판에 있던 반례이다. 이 반례로 내가 현재 출력값을 다른걸로 착각하고 있었음을 깨달았다. package com.boj.s2578; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp..

PS/BOJ 2023.02.09

백준 3584 (Java) 가장 가까운 공통 조상

3584번: 가장 가까운 공통 조상 해결 트리의 노드는 모두 root node를 부모로 한다. 즉, 모든 노드가 연결되어있다. 따라서 각 노드의 부모 노드를 찾다보면 root node에서 만날 것이다. 💡 다르게 말하자면 트리는 내 부모노드와 내가 공통 조상을 가지고 있다. 트리 구조 저장 x, y의 레벨을 찾고 부모 노드를 저장하는 방법은 union-find 알고리즘에서 root Parent를 찾는 방법에서 아이디어를 떠올려 풀었다. union-find 알고리즘의 disjoint set에서 서로 다른 두 노드가 연결되었는지 알기 위해, Parent 배열이 존재하고, 두 노드가 연결될 경우 두 노드의 부모를 같게 한다. getParent라는 재귀함수를 통해 두 노드의 부모가 같다면 연결되었다고 판단한다...

PS/BOJ 2023.02.07

백준 17478 (Java, C++) 재귀함수가 뭔가요?

재귀함수로, ___를 두가지 방식으로 해결할 수 있다. 재귀 횟수를 세는 n, 그리고 ___ 을 세는 cnt가 있다 재귀 횟수는 n번으로 n이 1보다 작거나 같으면 종료해야한다. cnt는 ___을 세기 위함이다. n을 감소시켰기 때문에 증가하는 변수인 cnt를 0으로 초기화하였다. cnt는 맨 처음 컴공과 학생이 교수에게 하는 말인 "재귀함수가 뭔가요./ " 앞에는 없으므로 0이 초깃값이다. (사실 종료 조건을 n으로 둔 다음 인자에 cnt만 두고 cnt를 증가시켜 종료 조건을 달면 함수 파라미터 수가 하나 줄어서 깔끔했을 것 같다) 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanne..

PS/BOJ 2023.02.06

MySQL 연동 오류(java.lang.ClassNotFoundException: com.mysql.jdbc.Driver) , intellij

pom.xml에서 4.0.0 org.example jdbctest3 1.0-SNAPSHOT 8 8 UTF-8 mysql mysql-connector-java 8.0.31 처럼 dependency를 추가하였는데도 com.mysql 에서 mysql-connector.jar 파일을 못찾는 오류가 발생했다. package org.example; public class DriverLoadingTest { public DriverLoadingTest() { try { Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("로딩 성공"); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out..