1장 - 돈 문제레드-그린-리팩터: 테스트 주도 개발 구성 요소레드: 실패하는 테스트를 작성합니다(컴파일 실패 포함). 테스트 스위트(suite)를 실행해서 테스트가 실패하는 것을 확인합니다.그린: 테스트를 통과할 만큼의 최소한의 코드를 작성합니다. 테스트 스위트를 실행해서 테스트가 성공하는 것을 확인합니다.리팩터: 중복 코드, 하드 코딩된 값, 프로그래밍 이디엄(idiom)의 부적절한 사용 등을 제거합니다. 이 과정에서 테스트가 깨진다면, 깨진 모든 테스트를 그린으로 만드는 것을 우선시합니다.문제 인식여러 통화로 돈을 관리하거나 주식 포트폴리오를 관리하는 스프레드시트를 만들어야 한다고 가정해 봅시다.요구사항단일 통화로 된 숫자상에서 간단한 산술 연산이 가능해야 합니다. 5달러 * 2 = 10달러 10유..
테스트 주도 개발이란? 테스트 주도 개발(Test-Driven Development, TDD)은 코드를 설계하고 구조화하는 기법으로, 단순성을 장려하고 코드의 신뢰성을 높이는 데 중점을 둡니다. 이 정의의 다양한 부분을 살펴봅시다. 기법 테스트 주도 개발은 다음 세 가지 믿음을 바탕으로 하는 기법입니다.단순성: 불필요한 일을 최대한 줄이고, 단순성을 유지합니다.명확성과 명료성: 코드를 읽기 쉽게 만드는 것이 중요합니다.깔끔한 코드 작성: 유지보수가 쉽고 재사용할 수 있는 깔끔한 코드를 작성해야 합니다. '기법'이라는 것은 타고나는 능력이 아니라 훈련을 통해 습득해야 하는 기술입니다. 따라서, 배움에 대한 동기를 스스로 만들어 배움을 이어나가는 것이 바람직할 것입니다. 코드 설계 및 구조화 테스트 주도 개..
백준 11729 번 하노이 탑 이동 순서문제https://www.acmicpc.net/problem/11729풀이하노이의 탑 이동 공식3개의 지점 from, to, via가 있고 n개의 원판이 from에 꽂혀 있을 때, n-1개의 원판을 from에서 to를 거쳐 via로 이동시킵니다. (an-1회)n번째 가장 큰 원판을 to로 이동시킵니다. (1회)1에서 via로 이동시킨 n-1개의 원판을 via에서 from을 거쳐 to로 이동시킵니다. (an-1회)이를 점화식으로 표현하면 an = 2 * an-1 + 1입니다. a1이 1이므로 또 다른 형태로 표현해 보자면 an = 2^n - 1이 되고, 이를 통해 n개의 원판의 이동 횟수를 구할 수 있습니다. 이동 순서는 n번째 원판을 이동하기 전에 n-1개의 원판..
문제https://www.acmicpc.net/problem/18428풀이 N의 최댓값이 6으로, N^6도 5만이 채 되지 않습니다. 따라서 완전 탐색을 통해 장애물을 놓을 위치를 선택합니다. 3개의 장애물을 모두 설치하고 나면, 모든 선생님의 위치에서 상하좌우 모든 방향에 대해 장애물이나 학생을 만날 때 까지 한방향으로 쭉 이동하는 과정을 반복해서 확인합니다. 만약 장애물을 만나면 다른 방향을 탐색하고, 학생을 만나면 false 값을 반환합니다.package mainimport ( "bufio" "fmt" "os" "strconv")var ( scanner = bufio.NewScanner(os.Stdin) writer = bufio.NewWriter(os.Stdout) N int c..
문제 23324번: 어려운 모든 정점 쌍 최단 거리 첫 번째 줄에 정점의 개수 $N$($2 \le N \le 100\,000$), 간선의 개수 $M$($1 \le M \le 200\,000$), 정수 $K$($1 \le K \le M$)가 주어진다. 다음 $M$개의 줄에 걸쳐 $u_i$와 $v_i$가 주어진다. 이것은 $i$번째 간선은 $u_i$ www.acmicpc.net 풀이 크루스칼 알고리즘을 돌리면 N이 최대 100,000이므로 반드시 시간초과 O(N3)가 난다. K번째 간선을 정점 X와 정점 Y를 연결하는 간선이라고 하자. 문제에서 X-Y 간선만 가중치가 1이므로 이 간선을 우선 제외해보고 문제에 접근해 보자. 정점 X와 연결된 정점의 개수를 cntX, Y와 연결된 정점의 개수를 cntY라고 하..
Go 1.22 Release Notes - The Go Programming Language Go 1.22 Release Notes Introduction to Go 1.22 The latest Go release, version 1.22, arrives six months after Go 1.21. Most of its changes are in the implementation of the toolchain, runtime, and libraries. As always, the release maintains the Go 1 promise o go.dev 지난 2024년 2월 6일 Go 1.22.0 버전이 릴리즈 되었습니다. 대부분 툴체인, 런타임 그리고 라이브러리와 관련된 내용이기는 합니다만, 중요..
🌐 이전 게시글 2023.12.21 - [Go/코딩 하기] - [Go] Polygon ID와 Websocket을 사용한 신원 인증 - 3. 로그인 🛒 KYCAge Credential 발급 받기 KYCAge Credential 발급 받기 🛒 신원 인증 절차 클라이언트 => 서버 websocket 연결 요청 websocket 이 연결되면 websocket을 통해 서버 => 클라이언트 세션 아이디 전달 세션 아이디와 함께 클라이언트 => 서버 신원 인증 QR 코드 요청 서버 => 클라이언트 세션 아이디와 매칭되는 신원 인증 요청을 생성하여 저장한 뒤, QR 코드를 생성하여 전달 사용자의 Polygon ID 앱 => 클라이언트 인증 QR 코드 스캔 Polygon ID 앱에서 올바른 credential 선택, p..
🌐 이전 게시글 [Go] Polygon ID와 Websocket을 사용한 신원 인증 - 2. Websocket 🌐 이전 게시글 [Go] Polygon ID와 websocket을 사용한 신원 인증 - 1. Polygon ID 💜 Polygon ID? Polygon ID는 자기주권신원(Self-Sovereign Identity) 및 개인정보 보호 원칙에 따라 사용자의 개인 정보를 안전하게 보 piatoss3612.tistory.com 🛒 로그인 절차 클라이언트 => 서버 websocket 연결 요청 websocket 이 연결되면 websocket을 통해 서버 => 클라이언트 세션 아이디 전달 세션 아이디와 함께 클라이언트 => 서버 로그인 QR 코드 요청 서버 => 클라이언트 세션 아이디와 매칭되는 로그인 ..
🌐 이전 게시글 [Go] Polygon ID와 websocket을 사용한 신원 인증 - 1. Polygon ID 💜 Polygon ID? Polygon ID는 자기주권신원(Self-Sovereign Identity) 및 개인정보 보호 원칙에 따라 사용자의 개인 정보를 안전하게 보호하면서도, 앱과 사용자 사이의 신뢰할 수 있는 신원 검증 절차를 제 piatoss3612.tistory.com 📫 Websocket 웹소켓(WebSocket)은 웹 브라우저와 웹 서버 간의 양방향 통신을 제공하는 프로토콜입니다. 웹소켓의 특징과 동작 방식은 다음과 같습니다. 양방향 통신: 웹소켓은 양방향 통신을 지원하며, 클라이언트나 서버가 언제든 데이터를 보낼 수 있습니다. 지속적인 연결: 웹소켓은 연결을 생성하고 유지하는 데..
💜 Polygon ID? Polygon ID는 자기주권신원(Self-Sovereign Identity) 및 개인정보 보호 원칙에 따라 사용자의 개인 정보를 안전하게 보호하면서도, 앱과 사용자 사이의 신뢰할 수 있는 신원 검증 절차를 제공하기 위해 사용할 수 있는 프레임워크입니다. Polygon ID를 통해 생성된 신원은 DID(Decentralized Identity)라고 불리며, 신원에 기반한 부가적인 정보들은 VCs(Verifiable Credentials)라고 불립니다. VCs에는 나이나 학위 같은 간단한 정보부터 특정 DAO에서 발행된 멤버십 증명과 같이 다양한 정보들을 담을 수 있습니다. Polygon ID는 DID에 기반해 VCs를 발행하고 검증하는 프로세스를 제공하며, 이는 다음과 같이 세 ..