본문 바로가기

전체 글

(102)
[백준] 2839번: 설탕 배달 문제링크 : https://www.acmicpc.net/problem/2839 문제풀이경우의 수를 크게 아래와 같이 두 가지로 나눌 수 있다. 1. 5킬로그램 봉지로 다 채워지는 경우 (5로 나눈 나머지가 0인 경우)2. 5킬로그램 봉지에 모두 담아지지 않는 경우 (5로 나눈 나머지가 0이 아닌 경우) 5로 나눠지는 15와 같은 경우는, 그 몫을 출력하면 된다. 하지만 2번의 경우 몇가지 예를 들면, 18킬로그램① 5킬로그램 봉지 3개 --- 3킬로그램 남음② 3킬로그램 봉지 1개 9킬로그램방법1① 5킬로그램 봉지 1개 --- 4킬로그램 남음② 3킬로그램 봉지 1개 --- 1킬로그램 남음 방법2① 3킬로그램 봉지 3개 위 작업 순서를 간단히 적어보면 아래와 같다.① 5킬로그램 봉지에 넣어본 후, 남은 설..
[C++] 생성자와 소멸자 생성자란? 객체 생성 시 처음 한번 호출되는 함수다. 주로 값을 처음 초기화할 때 사용한다. 생성자는 클래스와 동일한 명칭을 가지며, 반환형이 없다. Point.h class Point { private: int xpos; int ypos; public: Point(); Point(int x, int y); void ShowPoint(); }; Point.cpp #include #include "Point.h" Point::Point() { xpos = 1; ypos = 2; } Point::Point(int x, int y) { xpos = x; ypos = y; } void Point::ShowPoint() { std::cout
[C++] 정보은닉과 캡슐화 정보은닉보통 클래스의 멤버변수는 private으로 선언하는 경우가 많다.public으로 선언하여 어디서든 접근하면 편리하지 않을까? 하는 생각이 들겠지만, public으로 모든 변수를 선언하게 되면 실수나 예외상황에 대처하기가 어려울 수 있다. 예를 들어 프로그램을 작성할 때 포인트의 범위가 0이상으로 정의되어있다고 하자.이를 모르는 사람은 실수로 음수를 입력할 수도 있다.멤버변수를 모두 private 선언하여 접근하지 못하게 하고, SetX, SetY 함수로 접근하도록 유도하면아래와 같이 프로그램 내에서 음수를 입력했을 경우 예외를 처리할 수 있다. Point.h class Point { private: int xpos; int ypos; public: int GetX() const; int GetY(..
[백준] 1000번: A+B 문제링크 : https://www.acmicpc.net/problem/1000 문제풀이단순 입출력 문제 소스코드 #include using namespace std; int main() { int a, b; cin >> a >> b; cout
[C++] 객체지향 프로그래밍 절차지향 vs 객체지향절차지향 프로그래밍이란 말 그대로, 순차적으로(정해진 순서대로) 진행되는 프로그래밍 기법이다.따라서 함수가 중심이 된다.대표적으로 사용되는 언어는 C언어가 있다. 그럼 객체지향은 절차가 없나?객체지향에도 절차가 아예 없는 건 아니다.하지만 함수 중심으로 순차적으로 진행되는 것이 아니라, 객체 간의 상호작용을 통해 프로그램을 만든다.따라서 객체단위로 나뉘어져, 서로 연결해 사용한다. (객체에서 서로 함수호출)대표적으로 사용되는 언어는 Java, C++, C# 등이 있다. 그럼 객체지향에서 나오는 객체란 무엇인가? 객체(Object)란?하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)을 하나의 제품으로 만들어 놓은 것이다.class는 객체를 만들기 위한 틀로, class를 실체..
[C++] 클래스 클래스란?클래스도 마찬가지로 여러 변수를 그룹화하는 데이터 유형이다.이전에 나온 C++의 구조체는 클래스의 일종이다. 클래스 선언클래스는 키워드 struct를 대신해 class를 사용하여 선언한다. class Point { public: int xpos; int ypos; }; 접근제어 지시자가 선언되면, 다음 접근제어 지시자가 나오기 전까지 적용된다. 접근제어 지시자C++에서는 다음과 같이 세 개의 접근제어 지시자가 있다. public 어디서든 접근 허용 protected 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용 private 클래스 내에서만 접근 허용 클래스에서는 접근과 관련해서 별도의 선언을 하지 않으면, 기본적으로 private 선언이 된다.하지만 구조체에서 별도의 선언을 하지 않으면..
[C++] 구조체 구조체란?연관있는 데이터를 묶을 수 있는 문법적 장치이다.예를 들면 학생에 관련된 데이터로 학생 이름, 학번, 휴대폰번호, 주소가 있다고 하자.각각의 데이터들은 별도의 변수로 정의할 수 있지만 학생이라는 이름으로 묶어서 정의하면 프로그래밍이 한결 수월해질 것이다. 아래는 간단히 포인트를 예로한 구조체의 사용법이다. 구조체 선언구조체는 struct라는 키워드를 사용해 선언한다. struct Point { int xpos; int ypos; }; 구조체 변수와 초기화구조체를 사용하려면 Point타입의 변수를 선언하면 된다.선언한 변수로 각 멤버에 멤버 선택 연산자(.)로 접근하여 초기화할 수 있다.(초기화하지 않으면 쓰레기값이 들어간다.) #include using namespace std; struct P..
[C++] new & delete C++에서 동적할당을 할 때에는 new 키워드를, 소멸할 때는 delete 키워드를 사용한다. * 동적할당이란?실행시간동안 사용할 메모리 공간을 할당하는 것이다.프로세스의 힙 영역에 할당되므로 프로세스가 종료되면 메모리가 해제된다.하지만 실행 중 메모리 낭비를 줄이기 위해 명시적으로 메모리 할당을 해제해주어야 한다.Java와 C#에서는 가비지 컬렉터가 존재하여 자동으로 해제가 되지만,C/C++에서는 가비지 컬렉터가 존재하지 않으므로 프로그래머가 함수를 사용해 해제해야 한다. 사용 예 (할당) int *ptr = new int; double *ptr = new double; int *arr = new int [5]; double *arr = new double[5]; char *str = new char[..