본문 바로가기

Programming

C++ std::string 토큰(Token) 분리 방법(Tokenize) 한 문자열에 데이터가 공백 등의 특정 문자를 기준으로 저장되는 경우가 있습니다. CSV 파일 형식의 경우 데이터가 ,(Comma)로 구분됩니다. 각각의 필드를 가져오기 위해서 쉼표를 기준으로 끊어서 문자열을 가져와야 합니다. 이런 과정을 Tokenize라고 하며 대부분의 프로그래밍에서 활용됩니다. C에서는 char 배열을 strtok 함수로 특정 문자를 기준으로 토큰 추출이 가능합니다. C#과 MFC의 Tokenize 방법은 아래 링크에서 확인 가능합니다. 2015/06/22 - [Programming/Win32&MFC&COM] - CString 토큰(Token)으로 분리시키기(AfxExtractSubString) CString 토큰(Token)으로 분리시키기(AfxExtractSubString) C/C.. 더보기
자바(Java) JDK 설치 및 환경 변수 설정 Java 개발을 시작하려면 먼저 JDK를 설치해야 합니다.JDK는 아래 링크에서 다운로드 가능합니다.https://www.oracle.com/technetwork/java/javase/downloads/index.html최신 JDK 버전의 다운로드 버튼을 클릭합니다.Java SE Development Kit의 OS에 맞는 설치 파일을 다운로드 받으면 됩니다.윈도우 64비트의 경우 Windows x64의 파일을 선택해서 다운로드하면 됩니다.Accept License Agreement 부분에 체크해야 다운로드가 가능합니다. 설치 파일을 실행해서 설치를 진행합니다.Next 버튼을 클릭하고 설치를 계속합니다.기본으로 선택된 기능들을 확인하고 Next 버튼을 클릭합니다.오라클에서 2019년 1월부터 Java를 구.. 더보기
C++ 홀수/짝수(홀짝) 구분 방법 프로그래밍 언어에서 정수의 홀수/짝수 구분은 비교적 간단한 주제 중 하나입니다.간단한 주제이면서도 상당히 활용도가 높습니다.C++에서 간단하게 정수의 홀짝을 구분하는 방법은 다음과 같습니다. 1. % 연산자(Modulus operator) 먼저 % 연산자로 사칙연산 급으로 취급되는 가장 기본적인 연산자입니다.Modulus operator로 불리며 정수 나눗셈의 몫이 아닌 나머지 값을 리턴합니다.정수를 2로 나눴을 때 나머지가 0이기 때문에 이것을 기준으로 홀수/짝수 구분이 가능합니다. 2. & 연산자(Bitwise AND operator)비트 연산자 중 하나인 & 연산자를 사용하는 방법 역시 가능합니다.짝수 정수의 가장 우측에 있는 비트가 0인 점을 이용하는 방법입니다.정수와 1을 & 연산자로 연산하면 .. 더보기
C++ 스택을 사용한 괄호 짝 맞추기(Balanced brackets) 괄호 짝 맞추기(Balanced brackets)는 여는 괄호와 닫는 괄호의 짝이 맞는지 확인하는 문제입니다. 가장 나중에 열렸던 괄호 타입이 가장 먼저 닫혀야 됩니다. 이런 특성은 스택(Stack) 자료형을 활용하면 쉽게 구현이 가능합니다. 여는 괄호는 모두 스택에 넣고 닫는 괄호가 나올 때 스택의 최상단(Top)에 위치한 여는 괄호와 비교합니다. 그리고 닫는 괄호가 나왔을 때 스택이 비어 있으면 잘못된 짝으로 구성된 것입니다. 모든 문자를 비교한 이후에 스택이 깔끔하게 비었으면 완전한 괄호 짝이 맞는 문자열이 됩니다. 전체적인 코드는 다음과 같습니다. 30줄 남짓의 코드로 쉽게 구현이 가능합니다. 추가로 브라켓을 추가해야 하는 경우 map 타입의 pairs에 여는 괄호와 닫는 괄호 쌍을 입력해주면 됩.. 더보기
파이썬 정규표현식으로 쉼표(콤마, Comma)가 있는 숫자 찾기 파이썬의 re 모듈은 정규표현식(Regular Expression, regex)을 담당합니다.정규표현식은 이메일이나 IP 주소의 유효성 등에 활용이 가능합니다.그리고 다양한 패턴에 따라서 파일명을 바꾼다거나 하는데도 활용할 수 있습니다.여기서 알아볼 정규표현식 활용 방법은 쉼표로 구분된 숫자를 추출하는 것입니다.일반적으로 3자리마다 쉼표로 구분하는 숫자 표기방식을 찾는 방법입니다.쉼표로 구분되는 숫자는 다음과 같은 형식의 숫자입니다.45,123-12,345.0154,321.23123,456,789 파이썬 정규표현식으로 표현하면 다음과 같습니다. import re def check_number(text): regex = re.compile(r'((-)?\d{1,3}(,\d{3})*(\.\d+)?)') se.. 더보기
[정렬 알고리즘] 퀵 소트(Quick Sort) 퀵 소트는 이름 그대로 빠른 성능을 제공하는 정렬 알고리즘입니다.평균적으로 O(n log n)으로, 최악의 경우 O(n2)의 시간 복잡도를 보입니다.기본적인 방식은 아래와 같습니다. 리스트에서 원소를 한 개 선택하는데 이 원소를 피벗(Pivot)이라고 부릅니다. 피벗이 선정되면 피벗보다 작은 값들은 피벗의 좌측에, 큰 값들은 우측에 위치시킵니다. 피벗은 자신의 자리를 찾았으므로 고정되며 좌우의 작은 값들과 큰 값들을 다시 재귀로 반복합니다. 이런 식으로 피벗의 위치를 전부 찾아주게 되면 결과적으로 정렬된 리스트가 됩니다.피벗은 다양한 방법으로 선택이 가능한데 보통 가장 앞의 원소나 가장 뒤의 원소를 선택해서 진행합니다.다음 코드는 가장 뒤의 원소를 피벗으로 선택하는 퀵 소트 코드입니다. #include .. 더보기
Visual Studio 2017에서 MFC 개발하기 Visual Studio 2017 설치 이후 MFC 프로젝트가 보이지 않는 경우가 있습니다.이런 경우 개별 구성 요소에서 MFC를 추가해야 합니다.먼저 시작에서 Visual Studio Installer를 검색해서 실행합니다.실행하면 설치된 Visual Studio 2017 버전을 확인할 수 있습니다.수정 버튼을 누르면 설치된 내용을 변경할 수 있습니다.개별 구성 요소로 이동하면 설치된 구성 요소와 설치가 가능한 구성 요소를 확인할 수 있습니다. 하단 부분의 MFC 및 ATL 지원(x86 및 x64)에 체크하고 좌측 하단의 수정 버튼을 누르면 설치가 됩니다.설치가 완료되면 Visual Studio를 실행하고 MFC 프로젝트 생성이 가능합니다.좌측에서 C++의 MFC 옵션을 선택하면 MFC 응용프로그램 생.. 더보기
Windows 10 IoT Core 리모트 디스플레이(Remote Display) 일반적으로 Windows 10 IoT Core가 설치된 장치는 디스플레이를 연결하지 않습니다.라즈베리파이3의 Windows 10 IoT Core에서는 대부분 원격으로 프로그램을 실행합니다.UI의 내용을 확인하는 것보다 MQTT 등을 통한 통신을 주로 사용합니다.화면을 확인하고 싶으면 리모트 디스플레이를 통한 확인이 가능합니다.다음 영상을 통해서 라즈베리파이3 원격 디스플레이 기능을 확인할 수 있습니다.해당 기능을 사용하기 위해 먼저 원격 서버 기능을 활성화해야 합니다.웹페이지나 Windows Device Portal을 통해 원격 서버 기능을 활성화시킵니다.좌측의 Remote 메뉴를 선택하고 원격 서버(Remote Server) 활성화에 체크합니다.이제 PC에서 다음 앱을 설치합니다.https://www... 더보기