23.03.29 Day42

오윤범·2023년 3월 29일
0

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에 들어감

0개의 댓글