본문 바로가기

cpp32

[백준] 1436번 영화감독 숌 - C++ 영화감독 숌 문제 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그다음으로 큰 수는 1666.. 2024. 3. 10.
[열혈 C++] private 접근제어지시자의 정확한 범위 private private의 뜻은 클래스를 공부한 사람이라면 누구나 알고 있을 것입니다. private은 외부로부터의 접근을 제한한다는 뜻입니다. 그렇다면 접근자가 같은 클래스이지만 다른 객체라면 private 영역에 접근할 수 있을까요? 답은 '그렇다'입니다. 만약 private이 같은 클래스의 다른 객체에서의 접근까지 제한한다면 복사생성자나 연산자 오버로딩을 하지 못했을 것입니다. #define _CRT_SECURE_NO_WARNINGS #include using namespace std; class SimpleClass { private: int num; public: SimpleClass(const SimpleClass& copy) :num(copy.num) //같은 SimpleClass이지만 .. 2024. 2. 20.
[백준] 15829번 Hashing - C++ Hashing 문제 APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정의한다. 해시 함수는 무궁무진한 응용 분야를 갖는데, 대표적으로 자료의 저장과 탐색에 쓰인다. 이 문제에서는 여러분이 앞으로 유용하게 쓸 수 있는 해시 함수를 하나 가르쳐주고자 한다. 먼저, 편의상 입력으로 들어오는 문자열에는 영문 소문자(a, b,..., z)로만 구성되어 있다고 가정하자. 영어에는 총 26개의 알파벳이 존재하므로 a에는 1, b에는 2, c에는 3,..., z에는 26으로 고유한 번호를 부여할 수 있다. 결과적으로 우리는 하나의 문자열을 수열로 변환할 수 있다. 예를 들어서 문자열.. 2024. 2. 14.
[열혈 C++] 생성자와 소멸자 생성자 생성자란 반환값이 없고 클래스와 이름이 같은 멤버함수로 클래스 객체가 생성될 때 한 번만 호출되는 함수입니다. 생성자도 함수이므로 오버로딩이 가능하고 디폴트 값을 설정할 수 있습니다. 그럼 간단한 생성자 예제를 작성해 보겠습니다.#define _CRT_SECURE_NO_WARNINGS#include using namespace std;class A {private: int num1;public: A(int num) { //생성자 정의 num1 = num; } void ShowNum() { cout ShowNum(); delete clsA2; return 0;}3050디폴트 생성자 모든 객체는 만들어질 때 하나의 생성자가 호출되어야 .. 2024. 2. 11.
[열혈 C++] 정보 은닉과 캡슐화 정보 은닉 정보 은닉이란 코드(클래스)에서 외부에서 함부로 접근하였을 때 문제가 될 수 있는 데이터를 안쪽으로 숨겨서 코드의 안정성을 높이는 것을 말한다. 안쪽으로 숨긴다는 것은 private: 처리를 하여 클래스 내부에서만 접근할 수 있게 하는 것을 말한다. 정보은닉을 하게 되면, 외부에서의 접근을 제한할 뿐만 아니라 프로그래머의 실수로 인한 오류도 잡아내기 쉬워진다. #include using namespace std; class point { public: int xpos; //좌표의 범위는 0~100 int ypos; void PrintPos() { cout 2024. 2. 4.
[열혈 C++] C++에서의 파일 분할 파일 분할 C++에서는 클래스별로 파일을 나눕니다. 각 클래스에서 헤더와 소스를 분리합니다. 헤더파일에는 클래스의 선언을, 소스파일에는 클래스의 정의(멤버함수의 정의)를 담습니다. 하지만 멤버함수를 인라인 처리할 경우 인라인 된 함수는 헤더파일에 넣어야 합니다. 헤더파일 : 클래스의 선언, 인라인 함수 소스파일 : 멤버함수의 정의를 포함한 클래스의 정의 #ifndef, #define, #endif 헤더파일을 디자인할 때는 헤더파일의 중복을 막기 위해 #ifndef, #define, #endif를 사용합니다. ifndef : 만약 정의되지 않았다면 #endif까지 유효한 코드로 만든다. define : 정의 한다. endif : #ifndef의 끝을 나타낸다. #ifndef HEAD #define HEAD.. 2024. 2. 4.