C++ 프로그래밍
함수 상속
#include<iostream> #include<cstring> using namespace std; class person { private: char name[30]; int age; public: person(const char*, int); void getdata(); }; person::person(const char* name, int age) { strcpy_s(this->name, name); this->age = age; } void person::getdata() { cout << "name: " << name << endl; cout << "age: " << age << endl; } class student: public person { private: int studentid; public: student(const char*, int, int); void showdata(); }; student::student(const char* name, int age, int studentid):person(name,age) {// 상속받는 클래스 멤버변수를 쓰려고 하면 다음과 같은 형태로 :상속받는클래스(멤버변수) 형태 this->studentid = studentid; } void student::showdata() { getdata(); cout << "studentId: " << studentid << endl; } int main() { cout << "person 객체 출력" << endl; person p("오윤범", 26); p.getdata(); cout << endl << "student 객체 출력" << endl; student s("오윤범", 26, 20172537); s.showdata(); return 0; }
상속받는 서브 클래스의 생성자 선언 시
student::student(const char* name, int age, int studentid) : person(name,age) 형태로 선언 및 초기화
오버라이딩
#include <iostream> using namespace std; class First { public: void MyFunc() { cout<<"FirstFunc"<<endl; } }; class Second: public First { public: void MyFunc() { cout<<"SecondFunc"<<endl; } }; class Third: public Second { public: void MyFunc() { cout<<"ThirdFunc"<<endl; } }; int main(void) { Third * tptr=new Third(); Second * sptr=tptr; First * fptr=sptr; fptr->MyFunc(); sptr->MyFunc();//오버라이딩된 Second 클래스의 MyFunc()가 호출됨 tptr->MyFunc();//오버라이딩된 Third 클래스의 MyFunc()가 호출됨 delete tptr; return 0; }
프로그래머스
외계행성의 나이
def solution(age): answer = '' word=['a','b','c','d','e','f','g','h','i','j'] for i in str(age): #age=23이면 i = 2,3 answer+=word[int(i)] return answer
1) word라는 list에 a부터 j까지 차례로 넣음
2) for i in str(age) --> age가 23일때 i는 2,3
3) answer += word[int('2')] --> word 배열의 2번째 인덱스에 있는 값을 answer에 누적해서 더함 --> word[0]='a' / word[1]='b' / word[2]='c' --> answer에는 c가 들어감
진료 순위 정하기
# 진료 순서 정하기 def solution(emergency): answer = [] tmp=sorted(emergency,reverse=True) # 내림차순으로 정렬 emergency:3,76,24 -> tmp=76,24,3 for i in emergency: # emergency : 3,76,24 / i=3,76,24 answer.append(tmp.index(i)+1) # tmp.index(i) --> 76,24,3 . index(3) -->리스트 몇번째에 있는지 알려줌 return answer solution([3,76,24])
1) tmp=sorted(emergency,reverse=True) --> 내림차순으로 정렬함
2) 원래 배열 emergency를 돌면서 빈 배열 answer에 tmp.index(i) 즉 내림차순으로 정렬된 list에 emergency로 들어오는 숫자가 몇번째에 위치하는지 인덱싱으로 가져옴
--> emergency : 3,76,24 / tmp : 76,24,3 / tmp.index(i) --> [76,24,3].index(3,76,24) --> tmp.index(i)는 2,0,1 의 순서로 tmp list에 저장된 해당 숫자의 위치값을 뽑아오는데 인덱싱 된 값 +1 해야 실제 등수가 나옴
3) answer.append(tmp.index(i)+1) --> 순위에 맞게 answer에 들어감