C++

    [C++] 클래스의 구조

    C++에서는 새로운 자료형(타입)을 만들 때 클래스(class)를 사용한다. 타입으로 클래스를 만들고, 이를 기반으로 인스턴스인 객체를 만든다. 클래스를 기반으로 인스턴스를 만드는 행위를 인스턴스화(instantiation)이라고 부른다. 객체 지향 프로그래밍에서는 속성과 행위를 선언하는 클래스 정의, 행위를 정의하는 멤버 함수 정의, 객체를 인스턴스화하고 사용하는 애플리케이션 구현이 필요하다. 클래스 작성하기 클래스 정의 #include using namespace std; //클래스 정의 class Circle { private: double radius; public: double getArea() const; void setRadius(double value); }; //멤버 함수 정의 doubl..

    while 반복문을 종료하는 방법: 센티넬, EOF, 플래그

    카운터 제어 while 반복문 #include using namespace std; int main() { int counter = 0; while (counter > num; } cout > 연산자를 입력하면 된다. 이 연산자는 스트림에서 항목을 읽다가 EOF를 만나면 false를 리턴한다. //키보드 while(cin >> num) { ... } //파일 while(infile >> num) { ... } //키보드 입력 EOF로 반복 종료하기 #include using namespace std; int main() { int num; int sum{0}; while (cin >> num) { sum +..

    [C++] 백준 11866. 요세푸스 문제 0

    문제요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) 출력예제와 같이 요세푸스 순열을 출력한다. 구상 1가장 처음 문제를 해결했던 방식이다.  입력하는 개수만큼만 저장할..

    [C++] 백준 11650. 좌표 정렬하기

    문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x와 y가 주어진다. (-100,000 ≤ x, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 구상 Key와 Value로 한 쌍을 묶어서 저장할 수 있는 map STL이 있다. 심지어 알아서 정렬도 해준다. 하지만 map은 중복된 키를 사용할 수 없다. multimap을 이용하면 중복된 키는 사용할 수 있지만 기본 옵션으로는 키나 값 둘 ..

    [C++] 변수를 초기화하는 세 가지 방법

    C++에서는 변수를 초기화 하는 방법이 세 가지 있다. 대입하기 (Copy Initialization) int num = 1; 대입 연산자(=)을 통해 우변의 값을 좌변에 대입하여 변수를 초기화하는 방법이다. C언어에서 사용하던 방법을 그대로 이용할 수 있다. 괄호 사용하기 (Direct Initialization) int num( 1 ); 변수 이름 다음에 바로 괄호를 사용하여 초기화할 수도 있다. 클래스와 같은 더 복잡한 객체를 효율적으로 선언할 수 있도록 해준다. 중괄호 사용하기 (Brace Initialization) int num{ 1 }; int num2 = { 2 }; int num3 {};//0으로 초기화 Uniform Initialization, List Initialization이라고도..

    [C++] 입출력(cin, cout)과 네임스페이스(namespace)

    프로그래밍 언어를 접하면 어떤 언어를 배우든 우선 기본 입출력부터 시작한다. C++에서는 cin()과 cout()을 사용한다. #include int main() { int num; std::cin >> num; std::cout