1장 - 돈 문제레드-그린-리팩터: 테스트 주도 개발 구성 요소레드: 실패하는 테스트를 작성합니다(컴파일 실패 포함). 테스트 스위트(suite)를 실행해서 테스트가 실패하는 것을 확인합니다.그린: 테스트를 통과할 만큼의 최소한의 코드를 작성합니다. 테스트 스위트를 실행해서 테스트가 성공하는 것을 확인합니다.리팩터: 중복 코드, 하드 코딩된 값, 프로그래밍 이디엄(idiom)의 부적절한 사용 등을 제거합니다. 이 과정에서 테스트가 깨진다면, 깨진 모든 테스트를 그린으로 만드는 것을 우선시합니다.문제 인식여러 통화로 돈을 관리하거나 주식 포트폴리오를 관리하는 스프레드시트를 만들어야 한다고 가정해 봅시다.요구사항단일 통화로 된 숫자상에서 간단한 산술 연산이 가능해야 합니다. 5달러 * 2 = 10달러 10유..
테스트 주도 개발이란? 테스트 주도 개발(Test-Driven Development, TDD)은 코드를 설계하고 구조화하는 기법으로, 단순성을 장려하고 코드의 신뢰성을 높이는 데 중점을 둡니다. 이 정의의 다양한 부분을 살펴봅시다. 기법 테스트 주도 개발은 다음 세 가지 믿음을 바탕으로 하는 기법입니다.단순성: 불필요한 일을 최대한 줄이고, 단순성을 유지합니다.명확성과 명료성: 코드를 읽기 쉽게 만드는 것이 중요합니다.깔끔한 코드 작성: 유지보수가 쉽고 재사용할 수 있는 깔끔한 코드를 작성해야 합니다. '기법'이라는 것은 타고나는 능력이 아니라 훈련을 통해 습득해야 하는 기술입니다. 따라서, 배움에 대한 동기를 스스로 만들어 배움을 이어나가는 것이 바람직할 것입니다. 코드 설계 및 구조화 테스트 주도 개..
문제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 버전이 릴리즈 되었습니다. 대부분 툴체인, 런타임 그리고 라이브러리와 관련된 내용이기는 합니다만, 중요..
본 게시글에서는 저서 '밑바닥부터 시작하는 비트코인'의 Python으로 작성된 예제 코드를 Go로 컨버팅 하여 작성하였습니다. 📺시리즈 2023.08.25 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 1장 유한체 2023.08.27 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 2장 타원곡선 2023.08.30 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 3장 타원곡선 암호 2023.09.02 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 4장 직렬화 2023.09.05 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 5장 트랜잭션 2023.09.11 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 ..
본 게시글에서는 저서 '밑바닥부터 시작하는 비트코인'의 Python으로 작성된 예제 코드를 Go로 컨버팅 하여 작성하였습니다. 📺시리즈 2023.08.25 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 1장 유한체 2023.08.27 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 2장 타원곡선 2023.08.30 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 3장 타원곡선 암호 2023.09.02 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 4장 직렬화 2023.09.05 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 5장 트랜잭션 2023.09.11 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 ..
본 게시글에서는 저서 '밑바닥부터 시작하는 비트코인'의 Python으로 작성된 예제 코드를 Go로 컨버팅 하여 작성하였습니다. 📺시리즈 2023.08.25 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 1장 유한체 2023.08.27 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 2장 타원곡선 2023.08.30 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 3장 타원곡선 암호 2023.09.02 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 4장 직렬화 2023.09.05 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 5장 트랜잭션 2023.09.11 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 ..
본 게시글에서는 저서 '밑바닥부터 시작하는 비트코인'의 Python으로 작성된 예제 코드를 Go로 컨버팅 하여 작성하였습니다. 📺시리즈 2023.08.25 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 1장 유한체 2023.08.27 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 2장 타원곡선 2023.08.30 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 3장 타원곡선 암호 2023.09.02 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 4장 직렬화 2023.09.05 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 5장 트랜잭션 2023.09.11 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 ..
본 게시글에서는 저서 '밑바닥부터 시작하는 비트코인'의 Python으로 작성된 예제 코드를 Go로 컨버팅 하여 작성하였습니다.📺시리즈2023.08.25 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 1장 유한체2023.08.27 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 2장 타원곡선2023.08.30 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 3장 타원곡선 암호2023.09.02 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 4장 직렬화2023.09.05 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 - 5장 트랜잭션2023.09.11 - [블록체인/Bitcoin] - 밑바닥부터 시작하는 비트코인 -..