C++ 137

[백준] 1013 Contact With C++

문제설명 입출력 예제 개념 주어진 문자열에서 특정 패턴을 찾는 문제다. C++에서 문자열에서 특정 패턴을 찾는 데 사용할 수 있는 주요 라이브러리로는 정규 표현식(Regex) 라이브러리 regex가 있다. 이는 문자열 검색 알고리즘이 사용할 수 있는 템플릿으로 작동한다. 이를 이용하여 문자열에서 특정 내용을 찾거나 대체하거나, 입력된 문자열이 특정 패턴과 일치하는지 확인하는 등의 작업을 수행할 수 있다. 정규 표현식의 구문 중 문제에서 제시하는 표현들은 다음과 같다. abc: 정확히 abc와 일치하는 문자열을 찾는다 a+: a가 1번 이상 반복되는 문자열을 찾는다 (ab)+: ab가 1번 이상 반복되는 문자열을 찾는다 a|b: a또는 b를 찾는다 이를 이용하여 정규 표현식 패턴을 나타내는 클래스인 reg..

Algorithm/백준 2023.08.01

[C++] 문자열 변환 - 대문자/소문자 변환

문자열 변환 개요 문자열을 대문자/소문자로 변환하는 것은 사용자의 입력을 정규화하거나, 문자열을 비교하기 위해 종종 사용된다. 사용자로부터 받은 입력은 대소문자가 섞여 있거나, 불규칙한 형태로 들어올 수 있다. 이렇게 다양한 형태로 들어온 데이터를 일관된 형식으로 변환하는 것을 정규화라고 하는데, 대문자나 소문자로 변환하는 것은 이런 정규화 작업의 일부로, 이를 통해 데이터를 일관되게 다룰 수 있게 된다. 또한 대소문자를 구분하지 않은 문자열 비교를 수행할 때, 모두 대문자나 소문자로 변환하여 비교하는 것은 편리한 작업이다. 예를 들어, 사용자 이름이나 이메일 주소를 비교할 때, 대소문자를 구분하지 않도록 모두 같은 형식으로 변환한 후에 비교를 수행하면 오류를 줄일 수 있다. 이번 시간에는 이러한 방법들..

Language/C++ 2023.07.31

[백준] 1004 어린 왕자 with C++

문제설명 입출력 예제 개념 이 문제는 어린 왕자가 출발점에서 목표점까지 지나가야 하는 최소 행성계의 수를 찾는 문제다. 각 행성계는 2차원 평면에서 원으로 표현된다. 이 문제를 풀기 위한 핵심 개념은 다음과 같다. 1. 원의 내부에 점이 위치하는지 확인: 이 문제를 해결하기 위해서는 주어진 점이 원 안에 있는지를 확인해야 한다. 이를 위해 거리 계산 공식을 사용하면 된다. 주어진 점 (x, y)와 원의 중심 (x1, x2) 사이의 거리는 sqrt((x-x1)^2 + (y-x2)^2)로 계산하고, 이 값이 원의 반지름 r보다 작거나 같으면 점은 원 내부에 있다. 2. 출발점과 도착점이 동일한 원에 있는 경우: 문제에서는 출발점과 도착점이 동일한 원 안에 있을 경우, 어린 왕자가 그 원을 지나가지 않고 무시..

Algorithm/백준 2023.07.28

[TeamCreator] ver 1.0

Team Creator ver 1.0 개요 "Team Creator"는 친구들과 함께 League of Legends 5대5 내전을 진행할 때 항상 팀 구성의 밸런스를 맞추는 것이 어려워 개발하게 되었다. 이 프로그램은 각 사용자의 티어를 기반으로 점수를 부여하고, 팀원들의 총 점수가 비슷하게 배치될 수 있도록 밸런스를 조정하는 것을 목표로 한다. 이 프로젝트의 시작은 간단한 아이디어에서 출발했다. 현재 팀의 밸런스를 시각적으로 보여주는 것이다. 그러나 프로젝트의 목표는 단순히 시각적으로 표시하는 것을 넘어서, 팀을 자동으로 구성하고 이를 GUI로 구현하는 것까지 확장할 예정이다. 이를 통해 사용자는 더욱 직관적이고 편리하게 팀을 구성하고 게임의 밸런스를 유지할 수 있게 되길 바란다. 기본 아이디어 해당..

Program/TeamCreator 2023.07.24

[프로그래머스] 개인정보 수집 유효기간 with C++

문제 설명 제한 사항 및 입출력 예제 개념 개인정보의 수집 유효기간을 확인하는 문제다. 이 문제에서는 오늘 날짜와 각 개인정보의 수집일을 바탕으로 개인정보의 수집이 유효한지, 아니면 파기해야 하는지를 판단하게 된다. 이때, 날짜는 YYYY.MM.DD 형태로, 개인정보는 YYYY.MM.DD A 형태로 주어집니다. 각 개인정보에는 수집일과 개인정보 유형(A)이 포함되어 있다. 이 유형은 유효 기간을 결정한다. 예를 들어, A 유형의 개인정보는 수집일로부터 특정 기간 동안만 유효한다. 유효 기간은 'terms'라는 문자열 벡터에 정의되어 있으며, 각 문자열은 유형과 그 유형의 유효 기간을 나타내는 월 단위의 숫자로 구성되어 있다. 따라서 이 문제의 목표는 오늘 날짜를 기준으로 개인정보의 유효 기간이 지났는지를..

[백준] 1002 터렛 with C++

문제설명 입출력 예제 개념 이 문제는 원의 방정식을 이용하여 해결할 수 있다 된다. 즉, 조규현의 좌표에서 목표인 류재명까지의 거리를 반지름으로 하는 원과, 백승환의 좌표에서 목표까지의 거리를 반지름으로 하는 원을 그린 후, 두 원의 교점의 개수를 구하면 문제를 해결할 수 있다. 따라서 두 원의 교점의 개수를 구하는 관계를 파악하기 위해, 두 원 사이의 거리를 이용할 수 있다. 이는 교점이 2개, 1개, 0개, 무한개일 때로 나눌 수 있다. 이때 두 원의 반지름을 각각 r1, r2라고 하고, 두 원의 중점 사이의 거리를 d라고 할 때 다음이 성립한다. 교점이 무한 개: d = 0 교점이 0개: r1- r2 < d < r1 + r2 교점이 1개: d = r1 ± r2 교점이 2개: d < r1 + r2 이..

Algorithm/백준 2023.07.20

[C++] Python 연동 with VS code

C++ Python 연동 개요 간단한 토이 프로젝트를 작업하던 도중, 클립보드를 캡처하는 기능이 필요해졌다. C++로 이를 구현하려고 하니, 윈도 API를 이용하면 가능하다는 걸 알았다. 하지만 이 방법에는 다른 OS와의 호환성이 떨어질 수도 있다는 문제점이 있다. 이에 대한 방안을 찾던 중, 파이썬에서는 이를 쉽게 구현할 수 있다는 걸 알게 되었다. 이번 시간에는 파이썬에서 작성한 코드를 C++에서 호출하는 기능을 알아보도록 하겠다. Python 3.11.4 버전을 쓰고 있으며, visual studio는 2022 버전을 사용하고 있다. 또한, 이를 통해 C++과 파이썬 사이의 간접적인 연동 방법을 알아보겠다. 이런 방법은 프로그래밍 언어 간의 장벽을 넘어, 더 효과적이고 확장 가능한 솔루션을 만들 수..

Language/C++ 2023.07.18

[MySQL] MySQL 서버 설정 및 레코드 추가

MySQL 연동 개요 지난 시간에는 MySQL과 visual studio를 연동하는 기본적인 방법에 대해 배웠다. 이번 시간에는 MySQL에서 새로운 테이블을 정의하고 visual studio를 사용해 이 테이블에 데이터를 업데이트하는 과정을 살펴볼 것이다. 이 과정을 통해, 데이터베이스를 구성하고, 데이터를 관리하는 기본적인 방법을 익혀 보자. 서버 생성 및 기본적인 명령어 먼저 데이터베이스를 구축할 서버를 생성해야 하므로, 새로운 커넥션을 만들어 주자. 서버 명만 설정하고, 나머지는 건드리지 말고 다음 단계로 넘어가면 된다. 다음과 같이 쿼리에 example이라는 database를 생성하고, 이 DB 아래에 example_table이라는 테이블을 생성해주자. 이 테이블은 name이라는 문자와 age라..

[MySQL] MySQL과 Visual Studio 연동하기

MySQL 연동 개요 MySQL은 널리 사용되는 오픈 소스 RDBMS(Relational Database Management System)이다. MySQL을 Visual Studio와 연동하면 C++ 프로젝트에서 MySQL 데이터베이스와 상호작용할 수 있다. 이를 통해 데이터의 저장, 조회, 수정 및 삭제와 같은 다양한 작업을 수행할 수 있다. 이번 시간에는 윈도우 환경에서 MySQL과 Visual studio를 연동해 보는 시간을 가지도록 해보자. 본문 해당 사이트에서 MySQL Connector/C++을 설치하자. 필자의 경우 window 64비트 환경이므로 Windows (x86, 64-bit), MSI Installer를 설치하였다. 설치를 마쳤다면, visual studio의 프로젝트 속성을 열..