전체 글 275

[Git] 로컬 저장소에서 원격 저장소로 클론 만들기

Git Clone 개요 개발 환경이 데스크톱과 노트북 모두를 사용해야 하는 상황에서는 파일들을 저장하는 서버가 필요하다. 클라우드 스토리지도 하나의 옵션이지만, 개발자들은 주로 아래와 같은 이유로 GitHub와 같은 원격 저장소를 선호한다. 버전 관리: Git은 소스 코드의 모든 변경 사항에 대한 이력을 추적한다. 이를 통해 특정 시점으로 롤백하거나, 누가 어떤 변경을 했는지, 왜 변경했는지에 대한 정보를 알 수 있다. 클라우드 스토리지는 이러한 종류의 상세한 버전 관리를 제공하지 않는다. 브랜칭과 병합: Git에서는 브랜치를 통해 동시에 여러 기능이나 버그 수정을 개발한다. 이후에는 이러한 브랜치를 병합하여 주 브랜치에 변경 사항을 반영할 수 있다. 이는 팀에서 동시에 여러 작업을 진행할 때 유용하다...

Version/Git 2023.08.11

[C++] 싱글톤 패턴 (2) with C++

예제 본문에서 구현한 예제 코드를 조금 바꿔서 main 함수에서, 그리고 다른 클래스에서 해당 클래스를 호출해 보자. 기본적으로 싱글톤으로 디자인된 인스턴스를 사용하려면 다음과 같은 코드를 입력하면 된다. DB* db = DB::GetInstance(); // 싱글톤 클래스명* 변수명 = 싱글톤 클래스명::정적함수; 우리의 목표는 유저의 정보를 담는 User 클래스를 만들고, DB 클래스의 인스턴스를 생성해 쿼리를 작성하는 것이다. 그리고 main 함수에서도 동일하게 사용할 수 있는지 확인해 보자. #include #include #include #include class DB { MYSQL _mysql; static DB* _instance; DB(); public: DB(const DB&) = del..

Language/C++ 2023.08.10

[C++] 싱글톤 패턴 (1) with C++

Singleton Pattern 개요 프로젝트 진행 중, 특정 클래스가 실행 동안 한 번만 초기화되어야 하는 상황이 발생할 때가 있다. 예를 들어, MySQL과의 연결을 관리하는 클래스는 여러 번 생성될 경우 메모리와 같은 자원의 낭비가 초래될 수 있으며, 데이터 일관성 또한 손상될 가능성이 있다. 다수의 프로그래밍 언어에서는 이와 같은 상황을 대비하여 싱글톤 패턴(Singleton Pattern)을 도입하였다. 이 패턴의 핵심은 애플리케이션 내에서 해당 클래스의 인스턴스가 유일하게 하나만 존재하도록 보장하는 것이다. 이를 통해 앞서 언급된 문제점을 해결할 수 있으며, 전역적으로 참조 가능한 액세스 포인트를 제공하여 다른 객체들이 이를 쉽게 활용할 수 있게 된다. 그러나, 이 패턴의 도입은 전역 상태를 ..

Language/C++ 2023.08.09

[Git] LFS bandwidth should purchase more data packs to restore access 해결

LFS 데이터 할당량 초과 개요 깃허브 리포지토리에 데이터를 업로드하던 중, 다음과 같이 LFS의 데이터 할당량 초과 오류 메시지가 발생했다. 이는 로컬의 Git LFS 추적 객체를 GitHub 원격 저장소로 푸시하려 할 때 나타나게 된다고 한다. 이 문제를 해결하기 위한 대부분의 방안은 데이터팩의 추가 구매를 권장하지만, 필자는 코드만 원격 리포지토리에 저장하고, 데이터는 다른 방법으로 관리하고자 하였다. 따라서, 다른 해결 방안을 모색하게 되었고, 기존의 리포지토리에서 중요한 파일들만 백업한 후 새로운 리포지토리에 업로드하는 방법을 선택하게 되었다. 이 방식은 LFS 설정과 같은 사항들을 재설정해야 하는 번거로움이 있지만, LFS 서버에서 직접 데이터 객체를 삭제하는 것보다는 더 간편하다고 판단하였다..

Version/Git 2023.08.08

[C++] 배열 내의 원소 위치 찾기 with C++

배열 내의 원소 위치 찾기 개요 이번 글에서는 C++로 구현할 수 있는 배열 내의 원소 위치 찾는 방법들에 대해 알아보겠다. 먼저, 가장 기본적인 방식인 순차적인 탐색으로 원소를 비교하는 방법을 살펴본다. 그다음으로는 표준 라이브러리에서 제공하는 std::find와 std::distance 함수를 활용하는 방법을 공부해 보자. 각 방법의 특성을 분석하고, 특정 상황에서 어떤 방법이 최적인지에 대해 이해하도록 하겠다. 본문 먼저 일반적으로 배열에서 원소의 위치를 찾기 위해 for문과 if문을 활용한 방법이다. #include #include using namespace std; int main() { vector v = { 1,2,3,4,5,6,7 }; int target = 5; for (int i = ..

Language/C++ 2023.08.07

[C++] 정규 표현식 with C++

regex 개요 정규 표현식(Regualar Expreesion)은 문자열을 검색하거나 대체하는 데 사용되는 패턴이다. 이 패턴은 고정된 문자열이 될 수도 있고, 복잡한 문자열 패턴을 설명하는 규칙이 될 수도 있다. 이러한 표현식은 다양한 프로그래밍 언어에서 사용되며, C++에서는 regex 라이브러리를 사용하여 정규 표현식을 처리할 수 있다. 정규 표현식은 다음과 같은 경우에 유용하다. 특정 패턴을 가진 문자열을 찾을 때 문자열을 분리하거나 대체할 때 데이터 유효성 검사 이번 시간에는 regex 라이브러리를 활용해서 문자열을 분석하고 조작하는 다양한 방법들에 대해 알아보자. 본문 먼저 정규 표현식에 나오는 문법들에 대해 간단하게 알아보자. 여기서는 일반적으로 사용되는 몇 가지 기본적인 문법에 대해서만 ..

Language/C++ 2023.08.06

[C++] sort vs stable_sort with C++

sort vs stable_sort 개요 데이터를 정렬할 때 동일한 값들이 존재하는 경우가 발생할 수 있다. 이때, 우리가 사용하는 일반적인 정렬 알고리즘은 동일한 값들의 순서를 보장하지 않아서, 정렬 후의 순서가 원래의 순서와 다를 수 있다. 예를 들어, 이름으로 사람들을 정렬한 후, 나이로 다시 정렬하면 나이가 같은 사람들의 상대적인 순서가 정렬된 후에 변경될 수 있다. 본문 C++ 표준 라이브러리에는 정렬 함수로서 std::sort()와 std::stable_sort()가 존재한다. 이 두 함수는 기본적으로 배열 또는 벡터의 시작과 끝 위치를 인자로 받으며, 선택적으로 비교 함수를 추가하여 사용할 수 있다. 둘 모두 시간 복잡도는 평균적으로 O(n log n)으로, 대략적으로 n log n 번의 비..

Language/C++ 2023.08.05

[백준] 1015 수열 정렬 with C++

문제설명 입출력 예제 개념 원본 수열에서 정렬을 적용한 후, 각 원소가 원래 있던 위치에서 어떤 위치로 이동하였는지 확인하는 문제다. 즉, 원본 수열의 원소들이 정렬된 후의 위치 값을 찾는 문제다. 유의해야 할 점은, 중복된 원소의 값을 처리하는 것이다. 이는 동일한 원소의 경우 원본 수열에서 사전순으로 앞서는 것을 출력해야 한다는 것을 의미한다. 따라서 각 원소의 값을 그 원소의 원래 위치와 함께 저장하는 pair 자료형을 사용하여 해결할 수 있다. 또한, 오름차순을 정렬할 때 정렬 후에 동일한 값의 원소들 사이의 상대적인 순서를 유지하기 위해 stable_sort를 사용해야 한다. 풀이 #include #include #include using namespace std; bool custom(pair..

Algorithm/백준 2023.08.02

[백준] 1013 Contact With C++

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

Algorithm/백준 2023.08.01