본문 바로가기

Coding Test32

[C++ 기초] 오버로딩 1. 오버로딩 vs. 오버라이딩 오버로딩 (overloading) 오버라이딩 (overriding) 개념 동일한 이름의 함수를 중복 정의 상속 받은 함수를 재정의 제한 조건 1. 메소드명 동일 2. 메소드 원형이 하나 이상 달라야 함 3. 메소드 리턴 타입 동일 여부 상관 X 1. 메소드명 동일 2. 메소드 원형 모두 동일 3. 메소드 리턴 타입 동일 * 메소드 원형 : parameter 개수, 자료형 2. 오버로딩 2-1. 오버로딩이란 ? 오버로딩이란 동일한 이름의 함수를 중복 정의한다는 개념이다. 컴파일러는 사용된 함수의 매개변수 개수나 자료형을 구분하여 자동으로 어떤 함수를 호출해야 하는지 결정한다. 따라서 오버로딩은 하나의 함수에 여러 형태를 부여하는 다형성(polymorphism)을 갖는다. #.. 2022. 8. 11.
[C++ 기초] 상속 1. 상속 상속이란 객체 지향 프로그램의 한 특성으로, 부모 클래스의 멤버 변수 / 멤버 함수를 그대로 자식 클래스가 물려받아서 재사용한다는 개념이다. * 부모 클래스 = 슈퍼 클래스 = base class 자식 클래스 = 서브 클래스 = derived class 1-1. 상속의 효과 ① 경제성 : 불필요한 코드의 중복을 제거 ② 편의성 : 유지, 보수에 유리함 1-2. 상속 형식 class Base명 { }; class Derived명 : [접근제어자] Base명 { }; 1-3. 접근 제어자와 상속 public protected private 모든 함수에서 접근 가능 (클래스 내/외) 클래스 내 모든 멤버 함수와 이 클래스를 상속받는 자녀 클래스의 멤버 함수에서 접근 가능 클래스 내 모든 멤버 함수에.. 2022. 8. 3.
[C++ 기초] 클래스 1. 클래스란 ? 클래스는 멤버 변수와 멤버 함수를 묶어서 저장할 수 있는 틀, 단위이다. 1-1. 클래스 vs. 구조체 C C++ 구조체가 포함 가능한 것 멤버 변수 멤버 변수 멤버 함수 C와 달리 C++의 구조체는 멤버 변수 뿐만 아니라 멤버 함수 또한 포함할 수 있는데, 이러한 점에서 C++의 클래스는 구조체의 상위 호환으로 설명된다. (구조체와 거의 동일한 개념!) Property : 클래스 내부 멤버 변수 Method : 클래스 내부 멤버 함수 다만, C++에서 클래스와 구조체는 기본 접근 제어자에서 차이를 보인다. C++ 구조체 : 기본 접근 제어자 public C++ 클래스 : 기본 접근 제어자 private 1-2. 클래스 vs. 인스턴스 클래스 인스턴스 (=객체) 인스턴스를 만들기 위한 .. 2022. 8. 3.
[C++ 줍줍] 벡터를 이용한 집합 계산 : 합집합, 교집합, 차집합 벡터를 이용한 집합 계산을 위해서는 아래 사항들을 유의하며 미리 만들어진 set_###( ) 메소드를 사용하면 된다. ※ 유의 사항 1. #include 헤더 포함 필수 2. 사전에 집합 계산 결과를 담을 충분한 크기의 벡터를 준비해야 함 3. 반드시 정렬이 된 상태의 벡터를 이용해서 연산해야 함 ▷ 문제 상황 두 벡터의 합집합 결과를 알고 싶다 ! ▶ 해결 방법 set_union( ) 메소드를 이용 ※ set_union( ) vs. merge( ) set_union( ) merge( ) 중복 허용 X 중복 허용 O 합집합 개념 두 집합을 그대로 합치는 개념 ex ) #include #include using namespace std; int main() { return 0; } 2022. 7. 25.
[C++ 기초] 포인터 1. 포인터 1-1. 포인터란 ? 포인터란 데이터가 저장되어 있는 메모리 주소값을 저장하는 변수이다. 1-2. 포인터 연산자 ① 주소 연산자 ② 역참조 연산자 연산자 & * 기능 그 변수의 메모리 주소값을 가져온다 ( address of ~ ) 그 주소에 저장된 변수값을 가져온다 ( value of ~가 가리키는 애 ) ex int x = 5; cout 2022. 7. 20.
[C++ 기초] 배열 1. 배열 (Array) 1-1. 배열이란 ? 배열은 타입이 동일한 데이터 여러개를 저장할 수 있는 자료구조이다. 1-2. 배열의 선언과 초기화 1-2-1. 선언 vs. 초기화 선언 초기화 배열의 껍데기를 정의함 배열에 실제 데이터값을 삽입함 1-2-2. 배열의 선언 후 초기화 자료형 배열명[배열크기] ; ▷ 배열을 선언할 때는 배열의 크기 (= element 개수)를 지정해준다. int myArray[3]; // 크기가 3인 배열 myArray 선언 myArray[0] = 10; // myArray 초기화 myArray[1] = 20; myArray[2] = 30; 1-2-3. 배열의 선언과 동시에 초기화 선언과 동시에 초기화를 하는 경우에는 배열의 크기를 미리 지정해줄 필요 없다. 이 경우, 배열의 .. 2022. 7. 20.
[프로그래머스 Lv.2] 프린터 / c++ [출처] https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 .. 2022. 7. 17.
[프로그래머스 Lv.2] 기능개발 / c++ [출처] https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각.. 2022. 7. 17.
[프로그래머스 Lv.1] K번째수 / c++ [출처] https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5.. 2022. 7. 15.