목록All (635)
Brise
파생클래스 포인터를 기반클래스 포인터로 캐스팅하여 사용하는 것을 업캐스팅이라 한다. 업캐스팅을 이용하면 여러 종류의 클래스를 하나의 코드로 운용 가능하다는 장점이 있다. // 6_Upcasting1.cpp 140 page ~ #include class Animal { public: int age; }; class Dog : public Animal { public: int color; }; int main() { Dog dog; Dog* p1 = &dog; // ok Animal* p2 = &dog; // ok. 파생클래스의 주소를 // 기반 클래스 타입의 포인터에 담을수있다 //p2->color = 10; // error. Animal* 로는 Animal의 멤버만 // 접근 가능하다. static_ca..
상속은 객체지향언어에서 가장 중요한 개념중에 하나이다. 상속을 통하여 코드 재활용성의 가능성을 높일 수 있다. C++에서는 상속을 위하여 클래스 뒤에 상속받는 클래스의 이름을 콜론(:)으로 분리하여 명시한다. // 5_상속1.cpp 132page ~ #include #include class People { std::string name; int age; }; class Student : public People // 상속 ( inheritance ) { int id; }; class Professor : public People { int major; }; int main() { } private 지시어로 붙은 멤버 변수의 경우 파생 클래스에서도 접근이 불가능하다. // 5_상속2 class Base ..
상수멤버함수는 실행시 모든 멤버 값들을 상수로 취급하는 함수이다. 잘 생각해보면 c언어에서 const struct 가 있듯이 c++언어에서는 const class가 있으며, 거기에다가 객체 지향 언어이므로 const class에서 사용할 수 있는 함수가 있어야 한다. // 4_상수멤버함수1.cpp 119 page ~ #include class Point { public: int x, y; Point(int a = 0, int b = 0) : x(a), y(b) {} void set(int a, int b) { x = a; y = b; } void print() const // 상수 멤버 함수 { // 상수 멤버 함수 안에서는 모든 멤버를 상수 취급 합니다 // x = 100; // error std::c..

프로그래머스의 문제 종류 중 그리디 문제타입으로 되어 있는 연습문제이다. 문제는 위와 같다. 문제를 풀 수 있는 가장 간단한 방법은 순열 조합을 이용하여 가능한 조합의 수를 구하고 조합으로 만들어 낼 수 있는 가장 큰 수를 찾으면 된다. from itertools import combinations def solution(number, k): c = combinations(list(number), len(number)-k) num_list = map(''.join, c) answer = max(num_list) return answer 하지만 해당 코드를 이용하여 문제를 풀게 되면 몇 개의 문제 이외에는 시간 초과 오류가 발생한다. 문제의 정의에서 number의 자릿수는 최대 100만 자리..
오래된 대학 수업자료의 비밀번호를 잊어먹어 해제하고자 John the ripper에 대해서 알아보고 사용해보았다. John the ripper John the ripper는 무료 암호 해독 소프트웨어로, 다양한 파일 포맷에 대한 암호 해제를 지원한다. 대표적으로 지원하는 포맷은 pdf, zip, rar등이 있으며 워드리스트, 브루트포스, 마스크 기반 등의 암호 해독 방식을 지원한다. 브루트포스 기반의 공격이므로 사실 상 8자 이상의 비밀번호에 대해서는 거의 뚫기가 불가능하나 그 이하의 암호에 대해서는 꽤나 효율적으로 동작 가능하다. John the ripper 간단한 사용법 John the ripper의 사용방법을 요약하면 다음과 같다. 암호걸린 파일에서 해시를 추출 추출한 해시를 이용하여 암호 해독 해..
''' 2048 게임의 핵심 중의 하나는 방향키를 움직였을 때 숫자가 합쳐지는 부분입니다. 해당 부분을 reduce 함수로 분리하고, In/Out을 먼저 정의합니다. reduce 함수는 N길이의 l을 입력으로 받고, N길이의 리스트를 반환합니다. 내부 동작으로 숫자들을 한쪽에 모아 합친 뒤 반환하며 반환값은 N길이의 리스트를 반환합니다. 그 뒤로 mv_up/down/left/right함수를 작성하고 최종으로 함수를 활용하기위하여 DFS 를 작성하여 동작시킵니다. Depth는 문제에서 정의한 대로 5로 구현됩니다. ''' import sys # sys.stdin = open("12100.txt", "r") input = sys.stdin.readline N = i..
처음 망원경을 만드는 사람을 위한 Thomson's Rule이라는 말이 있습니다. Thomson's Rule for First-Time Telescope Makers: "It is faster to make a four-inch mirror then a six-inch mirror than to make a six-inch mirror." -- Programming Pearls, Communications of the ACM, September 1985 망원경을 만들고자 할 때 한번에 큰 망원경을 만드는 것보다 작은 망원경을 만들고 큰 망원경을 만드는 것이 더 빠르다는 것이다. 처음보기에는 말이 안되게 보이지만, 맨 처음 경험할 때에는 한번에 모든 것을 성공하려고 하기 보다 작은 성공을 통..