프로그래밍 10

Windows 상에서 Cmake로 간단히 빌드해서 출력해보기

https://google.github.io/googletest/quickstart-cmake.html Quickstart: Building with CMake GoogleTest - Google Testing and Mocking Framework google.github.io 우선 google test를 개인적인 프로젝트에 적용해보고자 cmake로 빌드하는 과정에서 작은 고민이 생겼었다. Linux에서는 아주 간단한 세줄의 명령어만으로 결과물을 확인할 수 있었는데, 윈도우상에서 cmake로 빌드를 시작하게 된다면, 비주얼 스튜디오의 솔루션 파일(*.sln)이 출력되어 이걸 어떻게 처리해야 하나 고민이 들었다. 가령 Linux던 Windows던 "cmake .." 라는 명령어를 터미널에 입력하기만 하면..

프로그래밍 2022.05.08

지속가능한 SW 개발을 위한 코드리뷰

이번 포스팅은 지난 4월 27일에 우아한테크세미나에서 진행했던 백명석 연사님의 영상을 보고 내용을 정리해보고 싶어 적게 되었습니다. 영상의 내용에는 왜 코드 리뷰가 필요한 지부터 시작하여 실질적인 코드 리뷰 절차와 팁들에 대해 다루고 있지만, 제 포스팅에서는 실질적인 리뷰 절차와 기법들에 대해서만 간단히 정리하도록 하겠습니다. 자세한 내용은 아래 링크의 영상을 참고하시면 좋을 것 같네요! 코드 리뷰 절차 코드 리뷰는 저자, 리뷰어, 변경 내역으로 구성되어 있다. 우선 저자의 경우 코드의 작성자로써 자신이 작업한 코드 변경 내역을 리뷰어들에게 리뷰를 요청하게 된다. 리뷰어는 저자로부터 받은 변경 내역을 확인하여 코드를 읽고 병합(merge) 요청을 받아들일지 결정하게 된다. 변경 내역의 경우 리뷰 시작 전..

프로그래밍 2022.05.01

[C/C++] 연결 리스트(Linked List)의 순환 구조 찾기, 토끼와 거북이

이번 포스팅에서 알아볼 것은 연결 리스트(linked list)의 순환 구조 찾기입니다. 이를 알아보기 위해선 먼저 연결 리스트의 간단한 형태에 대해 정의하고자 합니다. struct LinkedList { struct LinkedList* next; int item; }; struct LinkedList* new_linked_list(int item) { struct LinkedList* res = new LinkedList; res->next = NULL; res->item = item; return res; } 연결 리스트의 구조는 위와 같이 자기 자신의 포인터를 포함한 구조체입니다. 가장 먼저 선언된 구조체가 머리(head)라고 불리며, 이후에 생성되는 구조체들은 이전에 나온 연결 리스트의 next..

프로그래밍 2021.12.11

[C/C++] Swap

프로그래밍을 공부하다 보면 기본적인 문법 이후에는 자료구조와 알고리즘을 익혀야 한다. 특히 알고리즘은 가장 처음 배우는 것은 정렬(sorting) 알고리즘들이다. 정렬 알고리즘은 주어진 배열 안에 무작위한 여러 숫자들이 존재 할 때, 이 숫자가 오름차순(또는 내림차순)으로 정렬 시키는 방법에 대한 것이다. 이를 위해서는 필연적으로 배열의 순서를 바꾸기 위한 swap함수가 사용 되게 된다. void swap(int &a, int &b) { int temp = a; a = b; b = temp; return; } swap함수의 가장 기초적인 형태는 위와 같이 하나의 변수(위에선 a)를 선택하여 임시변수temp에 저장하고, 그 변수에는 b의 값을 저장한다. 이후 b변수에 temp변수에 저장한 a의 값을 다시 ..

프로그래밍 2021.12.04

KMean 군집화 연습(약간의 데이터 분석을 끼얹은)

들어가며¶기계 학습의 대표적인 방법들은 지도학습, 비지도 학습, 그리고 강화 학습 이다. 이번 포스트에서는 이 중 비지도 학습 방법 중 하나인 K-means를 활용한 군집화(clustering)기법에 대한 예제 코드이다. 이번 포스트의 jupyter notebook과 csv파일들은 모두 github에서 확인 할 수 있다. 라이브러리 불러오기¶ In [1]: import pandas as pd import numpy as np from sklearn.cluster import KMeans from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt impo..

프로그래밍 2021.07.03

Jupyter Notebook 멀티 프로세싱

Jupyter notebook에서 multiprocessing 하기!¶주피터 노트북(Jupyter notebook)상에서 멀티 프로세싱(multiprocessing)을 활용하기 위해서는 실제 작업할 함수를 외부 모듈(즉, *.py)로 만들어야 한다. 아래 예제의 경우 1.1은 노트북 상에 함수를 선언하고, 해당 함수를 통해 pool에 넣어주면 더 이상 실행되지 않고 멈춰있게 된다. 하지만 1.2의 경우처럼 사용하고자 하는 함수를 외부에 만들어 놓고 불러오면(import하면) 제대로 작동하게 된다. In [9]: from IPython.display import Image Image("./file_tree.png") Out[9]: 잘 안되는 경우¶ In [2]: from multiprocessing imp..

프로그래밍 2021.06.21

[C/C++] 백준 4948: 베르트랑 공준(소수)

베르트랑 공준https://www.acmicpc.net/problem/49484948번: 베르트랑 공준베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼www.acmicpc.net베르트랑 공준은 임의의 자연수 $n$에 대해서 $n$보다 크고 $2n$보다 작거나 같은 소수는 적어도 하나 존재한다는 내용이다. 예를 들어 $n=10$일 때, $10$보다 크고 $20$보다 작거나 같은 소수는 $11, 13, 17, 19$로 총 4개 존재한다. 백준의 4948번: 베르트랑 공준 문제는 임의의 자연수 $n$을 입력받았을 때, $n$ 보다 크고 $2n$보다 작거나 같은 소..

프로그래밍 2021.03.07

[C/C++] 백준 1011: Fly me to the Alpha Centauri(수열)

https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 온라인 코딩 문제 풀이 백준의 1011번 문제 Fly me to the Alpha Centauri 풀이 문제 요약 이전에 공간 이동한 거리가 k라고 하면, 다음에 공간 이동할 수 있는 거리는 k-1, k, k+1이다. 처음 공간 이동 할 수 있는 거리는 1이다. 마지막 도착 지점에 도달하기 직전에 움직일 수 있는 거리는 1이다. 이 때 공간 이동의 최소..

프로그래밍 2021.02.15
728x90
반응형