반응형
여러분, 지난 글들에서는 파이썬 itertools의 꽤 많은 기능을 C++에서 “파이썬스럽게” 흉내 내보았습니다. 이제 남은 인기 있는 기능 중 몇 가지를 더 살펴보고, 이 시리즈를 어느 정도 마무리할 때가 된 듯하네요. 이번에는 cycle, repeat, islice, tee 네 가지를 다뤄보겠습니다.cycle(iterable): 주어진 이터러블을 무한히 반복시키는 제너레이터입니다. 파이썬에서는 cycle([1,2,3]) 하면 1,2,3,1,2,3,1,2,3... 끝없이 이어집니다.repeat(elem, n=None): 특정 원소를 n번(또는 무한히) 반복하는 제너레이터입니다.islice(iterable, start, stop, step): 이터러블에서 특정 범위만 슬라이싱해주는 함수입니다. 파이썬의 ..
안녕하세요! 지난 글들에서 우리는 파이썬 itertools의 다양한 기능—range, enumerate, zip, map, filter, chain, takewhile, dropwhile, accumulate, groupby—를 C++에서도 나름 “파이썬스럽게” 구현하거나 표현하는 방법을 두루 살펴봤습니다. 이번에는 itertools의 대표적인 조합론적(iteration over combinations) 함수들인 product, permutations, combinations를 살펴보려고 합니다. 이 함수들은 파이썬에서 꽤 자주 쓰입니다. 예를 들어 product([1,2],[3,4])는 (1,3), (1,4), (2,3), (2,4)를 만들어내고, permutations([1,2,3], 2)는 (1,2..
여러분, 지난 글들에서 우리는 C++에서 파이썬의 range, enumerate, zip, map, filter, chain, takewhile, dropwhile 등을 흉내 내는 방법을 쭉 살펴봤죠. 이제는 또 다른 파이썬 itertools의 매력적인 부분으로 넘어가려고 합니다. 바로 accumulate(파이썬 itertools의 accumulate), 그리고 groupby입니다. accumulate는 요소들을 순회하면서 누적 합이나, 누적 연산 결과를 차곡차곡 모아줍니다. 파이썬에서는 itertools.accumulate([1,2,3,4], operator.mul) 이렇게 사용해 곱셈 누적을, operator.add를 사용해 합 누적을 손쉽게 할 수 있습니다. C++에도 std::accumulate라..
앞선 글들에서 우리는 파이썬의 range, enumerate, zip, map, filter와 같은 편리한 함수형 API를 C++20/23 문법과 Ranges 라이브러리 등을 통해 “파이썬스럽게” 구현하는 방법을 살펴보았습니다. 이번 글에서는 한 단계 더 나아가, 파이썬의 itertools 라이브러리가 제공하는 몇 가지 대표적인 툴을 C++ 스타일로 흉내 내보려 합니다. itertools는 파이썬에서 반복 가능한(iterable) 시퀀스를 다루는 데 매우 유용한 툴셋을 제공합니다. 그중에서도 chain, takewhile, dropwhile는 다양한 컨테이너나 이터러블을 직관적이고 유연하게 다룰 수 있게 해줍니다. 글의 구성은 다음과 같습니다:일반적인 C++ 구현 (Before): 파이썬 chain, t..
앞선 글들에서 우리는 파이썬의 range, enumerate, zip와 유사한 C++ 구현 방식을 살펴보았습니다. 파이썬의 직관적 문법을 C++20/23의 언어와 라이브러리 기능들을 통해 비교적 쉽게 재현할 수 있음을 확인했죠. 이번 글에서는 파이썬에서 자주 사용하는 함수형 스타일의 API인 map과 filter를 C++에서 어떻게 “파이썬스럽게” 구현할 수 있는지 다뤄보겠습니다. 파이썬의 map(function, iterable), filter(predicate, iterable)를 C++20/23에서 비슷한 느낌으로 쓸 수 있다면, 복잡한 로직을 더 간결하고 깔끔하게 표현할 수 있습니다. 글의 구성은 다음과 같습니다:일반적인 C++ 구현 (Before): 람다, std::transform, std::..
순자산(Net Worth)란?순자산(Net Worth)은 개인 또는 기업이 보유한 모든 자산(Assets)의 총합에서 모든 부채(Liabilities)를 차감한 뒤 남는 금액을 의미합니다. 쉽게 말해 “내가 가진 것(자산)에서 남에게 갚아야 할 것(부채)을 뺀 순수한 재산”이라고 할 수 있습니다. 순자산은 개인의 재무적 건강 상태를 파악하는 핵심 지표로 활용되며, 기업의 경우 주주지분(Shareholders’ Equity)과 유사한 개념으로 쓰입니다.공식:순자산=총자산−총부채순자산 = 총자산 - 총부채총 자산(Assets): 현금, 은행 예금, 주식, 채권, 부동산, 사업체 지분, 예술품, 골동품, 귀금속 등 경제적 가치가 있는 모든 재산.총부채(Liabilities): 주택 담보 대출금, 전세금 반환 ..
파일 검증 작업을 하다보면, 다운로드 받은 파일의 무결성(integrity)을 확인하기 위해 해시(hash) 값을 비교하는 경우가 많습니다. 특히 SHA-256 해시는 많은 소프트웨어 배포 사이트에서 표준적으로 제공하고 있는 대표적인 해시 알고리즘 중 하나입니다. 또한 단순히 파일뿐만 아니라, 특정 문자열에 대한 SHA-256 해시값을 얻고자 할 때도 있습니다. 이 글에서는 리눅스, 맥OS, 윈도우 환경에서 SHA-256 해시를 커맨드라인 도구로 간편하게 계산하는 방법을 설명하겠습니다.1. SHA-256 해시란?SHA-256은 SHA-2 알고리즘 계열의 해시 함수 중 하나로, 256비트 길이의 해시값을 생성합니다. 이 값은 일반적으로 16진수(HEX) 형태로 출력되며, 파일이나 문자열의 "지문"으로 사용..
1. SHA란 무엇인가?현대 디지털 환경에서 우리는 수많은 데이터를 주고받습니다. 이때 중요한 것은 데이터가 원래 의도한 상태 그대로 유지되고 있는지, 즉 무결성(integrity)을 보장하는 것입니다. 만약 전송 과정 중에 데이터가 변조되거나 손상된다면, 그 데이터는 더 이상 신뢰하기 어렵습니다. 이를 방지하고, 데이터의 "지문" 역할을 하는 것이 바로 SHA(Secure Hash Algorithm)입니다.SHA는 어떠한 길이의 입력 데이터라도 항상 일정한 길이의 해시 값(hash value)으로 변환하는 암호학적 해시 함수입니다. 해시 값을 통해 파일이나 메시지의 상태를 직관적으로 확인할 수 있으며, 계절마다 모습이 달라질 수 있는 나무라도 고유한 나이테 패턴(고정 길이의 해시 값)을 통해 동일한 나..
미국의 광활한 도로를 달리다 보면, 생각지도 못한 순간에 사슴(Deer), 엘크(Elk), 무스(Moose)와 같은 야생동물과 맞닥뜨릴 수 있습니다. 특히 가을 번식기나 새벽·해 질 무렵은 사슴 활동이 활발해지며, 이때 충돌 사고 발생률도 높아집니다. 막상 이런 상황에 놓이면 “신고해야 하나?”, “주마다 법이 다르다는데 어떻게 하지?”, “보험 처리는?” 등 다양한 궁금증이 떠오릅니다.이번 글은 이런 상황에서 참고할 수 있는 종합 가이드로, 미국 각 주별 규정 차이부터 신고 절차, 보험 처리, 그리고 유용한 팁까지 자세히 담았습니다. 마지막에는 흥미로운 Fun Fact와 짤막한 일화도 소개하니 끝까지 읽어보세요!왜 신고가 필요할까?법적 의무 준수:미국은 연방국가로 각 주(State)마다 독자적인 교통법..