C++(23)
-
[BOJ/미해결] #2667번: 단지 번호 붙이기👿
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고..
2022.08.01 -
[BOJ/C++] #1789번: 수들의 합
https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 문제 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 입력 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. 출력 첫째 줄에 자연수 N의 최댓값을 출력한다. 예제 입력 1 200 예제 출력 1 19 풀이 탐욕법을 이용하면 쉽게 풀 수 있다. N이 최대가 되기 위해선 작은 수부터 더해야 함을 알아야 한다. * int형이 나타낼 수 있는 최대 숫자와 문제가 주는 최대 범위가 맞는지 꼭 확인할 것. #include #include #include us..
2022.07.25 -
[C++] STL 개념 쉽게 이해하기
STL 개념을 명확하게 이해하고 가봅시다. 자세한 예시보단 큰 틀을 파악하는 것을 우선으로 하는 포스팅입니다. 목차 📃 STL 개념 📃 STL 컨테이너 📃 STL 반복자 📃 STL 알고리즘 STL 개념 📌 개념 STL(Standard Template Library). STL은 데이터 저장, 접근, 알고리즘 실행을 쉽고 빠르게 하는 하나의 틀입니다. 비슷한 데이터를 한데 묶을 수 있게 하며(데이터 추상화), 그 데이터를 대상으로 특정 알고리즘을 언제 어디서든 계속 수행할 수 있도록(코드 재사용) 합니다. 📌 일반화 프로그래밍 C++가 가지는 주요 특징 중 하나가 일반화 프로그래밍입니다. 데이터를 중심으로 돌아가는 객체 프로그래밍과 달리 일반화 프로그래밍은 알고리즘을 중심으로 돌아갑니다. 어떤 데이터가 오든..
2022.07.20 -
[Algorithm] 탐욕법(Greedy) 알고리즘 개념 및 예제
이번 포스팅에선 탐욕법(그리디) 알고리즘에 대해 알아보겠습니다. 개념과 알고리즘을 사용하는 조건을 알아보고, 동전 문제를 통해 활용 예시를 살펴보겠습니다. * 언어는 C++로 진행됩니다. 목차 📃 그리디 알고리즘 개념 및 조건 📃 그리디 알고리즘 예제 - 동전 문제 그리디 알고리즘 개념 및 조건 📌 개념 그리디 알고리즘은 가장 최선의 선택만을 쫒아가는 알고리즘입니다. 다이나믹 프로그래밍의 경우, 다양한 경우들을 하나하나 살펴보면서 최선의 수를 찾고자 했습니다. 그와 달리, 그리디 알고리즘은 오직 눈앞의 최선만을 쫒아 갑니다. 그리디 알고리즘은 Best Solution을 찾기 위한 알고리즘은 아닙니다. 그저 최선을 쫓다보면 결과도 좋겠지 하는 막연한 기대가 구현된 알고리즘이라 할 수 있습니다. 이때문에 현..
2022.07.18 -
[C++] 연산자를 커스텀해보자(operator overloading)
이번 포스팅에선 연산자 오버로딩에 대해 알아보겠습니다. 연산자: 말그대로 더하기, 빼기, 곱하기 등의 연산을 하는 실행 코드. 오버로딩: 같은 이름을 쓰지만 매개 변수에 따라 다른 실행을 할 수 있게 하는 규칙. 연산자 오버로딩은 즉, 기존의 연산자 실행과 더불어 사용자가 마음대로 커스텀하여 연산자를 사용할 수 있도록 하는 것을 말한다. 개발 환경 : VSCode, Windows 10 Contents 📌 연산자 오버로딩 & 연산자 함수 정의 📌 오버로딩의 제약 사항 기본 개발 세팅은 다음과 같습니다. #include #include #include using namespace std; int main() { return 0; } 📌 연산자 오버로딩 & 연산자 함수 정의 연산자 오버로딩이란? -, *, +..
2022.07.03 -
[C++] 생성자(constructor)와 소멸자(destructor)
이번 포스팅에선 생성자와 소멸자에 대해 알아보겠습니다. 생성자: 클래스 객체를 만들 때 매개 변수를 초기화하는 함수 소멸자: 객체의 수명이 끝나면 정리해주는 멤버 함수 생성자는 클래스의 시작, 소멸자는 클래스의 끝이라고 보면 되겠다. 개발 환경 : VSCode, Windows 10 Contents 📌 생성자 정의 및 선언 📌 디폴트 생성자 📌 복사 생성자 📌 소멸자 기본 개발 세팅은 다음과 같습니다. #include #include #include using namespace std; int main() { return 0; } 📌 생성자 정의 및 선언 앞서 배웠던 클래스는 거의 자신만의 매개 변수를 가졌습니다. 따라서 클래스 객체를 생성할 땐 매개 변수도 무조건 초기화해줘야 합니다. 생성자는 매개 변수..
2022.07.01