(C++) 로또 번호 랜덤 추출
재미로 짠 코드인데 정리하다 보니 rand() 대신
재미로 짠 코드인데 정리하다 보니 rand() 대신
리눅스 명령 출력을 프로그램 변수로 받는 세 가지 방법을 비교했다. popen이 간단한 이유와 그 대가, fork/exec/pipe를 직접 짤 때 빠뜨리기 쉬운 exit·버퍼 경계·strtok 문제까지 정리했다.
검사 결과를 콘솔에 표로 찍으려고 setw를 썼는데, setw가 바이트를 센다는 것과 한글이 섞이면 코드페이지에 따라 정렬이 무너진다는 것을 나중에 알았다. 그 과정과 대안을 정리했다.
WSAGetLastError가 뱉는 숫자를 사람이 읽는 문장으로 바꾸는 FormatMessage 사용법과, 유니코드 빌드에서 메시지가 깨지는 문제·메시지 끝에 붙는 개행·실패 시 LocalFree가 터지는 문제까지 정리했다.
시리얼 번호로 결과 파일명을 만드는 데 CString::Format과 sprintf_s를 써봤다. 유니코드 빌드에서 std::string을 %s로 넘기면 깨지는 문제, sprintf_s가 넘칠 때 자르는 게 아니라 죽는 문제까지 정리했다.
결과 파일이 덮어써지는 걸 막으려고 번호를 하나씩 올려가며 빈 이름을 찾는 코드를 짰다. 잘 돌긴 했는데 파일이 쌓이면 느려지고, 프로그램을 두 개 띄우면 같은 번호를 쓴다. 그 두 문제를 어떻게 정리했는지 남긴다.
Native WiFi API로 접속 중인 Wi-Fi 이름을 처음 뽑아본 기록. WlanGetAvailableNetworkList에서 dwIndex를 인덱스로 쓴 게 틀렸다는 걸 나중에 알았고, 연결된 항목을 어떻게 골라야 하는지까지 정리했다.
가중치 그래프에서 최단 경로를 구하는 다익스트라 알고리즘의 동작 원리를 정리하고, 6개 정점 인접행렬 그래프 예제로 C# 구현을 살펴본다.
Maze with BFS
DFS, BFS (Graph)