2024/12 38

2024.12.31[같은 것이 있는 순열]

같은 것이 있는 순열이란?n개 중 같은 것이 각각 p, q, ...., r개씩 있을 때 이들을 모두 택하여 일렬로 배열하는 순열의 수.예제a,a,a,b 네 개의 카드를 일렬로 나열하는 경우의 수를 예시로 들겠다.일단 일렬로 나열을 하는것이기 때문에 직순열로 계산을 해 4!로 계산을 하겠다. 그러면 총 24가지가 나오는데 여기서 a끼리는 서로 바뀌어도 똑같기 때문에 총 3개의 a들 끼리 바뀌는건 같다고 보면 a는 3개이기 때문에 3!의 값을 가지게된다.그렇기 때문에 나올 수 있는 문자의 수는 총 4종류라고 볼 수 있다. 공식n개 중 같은 것이 각각 p, q, ...., r개씩 있을 때.가 공식이 된다

C++[템플릿]

템플릿이란?템플릿은 동일한 코드를 다양한 데이터 타입으로 사용가능한 기능이다. 데이터 타입은 T로 하면 된다.우리는 여러 타입의 값을 같은 함수로 사용하기 위해 저번에 배운 오버로딩을 해서 구현했었지만, 매번 코딩을 할 때 마다 여러 타입이 들어갈 수 있는 함수를 전부 오버로딩을 할 수는 없기 때문에 그걸 위해 존재하는 기능이라고 보면 된다. 1.함수 템플릿다양한 데이터 타입에 대해 동일한 함수 로직을 사용할 수 있다.위에 템플릿 타입의 a, b가 있고 main에서 int와 double타입의 변수를 입력시켜 add라는 함수를 실행해 보겠다.두 타입 다 잘 작동하는걸 볼 수 있다.2. 클래스 템플릿클래스 템플릿 또한 동일한 구조를 다양한 데이터 타입으로 사용하기 위한것이고 함수와는 약간 다른게 있다.클래스..

C++/개념정리 2024.12.31

C++[함수 오버로딩]

함수 오버로딩C++는 C언어와 다르게 규칙만 지키면 동일한 이름의 함수를 사용할 수 있다. 이 시스템을 오버로딩이라고 한다.하지만 동작 체계까지 완전 같으면 구분할 수 없기 때문에 필수 조건이 있다.매개 변수 타입매개 변수의 개수이 두개중 하나는 무조건 달라야 프로그램이 구분을 해서 사용할 수 있다.매개 변수 타입이 다른 경우똑같은 이름인 display라는 함수를 각기 다른 타입으로 만들었고 입력 타입만 다르게 바꿨다 실행을 하니 문제없이 잘 작동한다. 매개 변수의 개수가 다른 경우세개 다  display라는 이름의 함수로 매개변수의 개수만 다르게 설정하고 실행시켜봤다. 전혀 문제없이 잘 돌아간다. 주의해야되는것!위의 경우 매개변수의 타입이 다르기 때문에 잘 작동될것으로 생각되지만 포인터의 개념이 arr..

C++/개념정리 2024.12.31

C++[얕은 복사, 깊은 복사]

얕은 복사(Shallow Copy)객체의 메모리 주소를 복사한다. 원본 객체와 복사된 객체가 같은 메모리 주소를 가리킨다.복사된 객체는 원본 객체와 동일한 데이터에 접근하기 때문에, 원본 객체가 삭제되면 복사된 객체도 영향을 받아 잘못된 메모리 접근이 발생할 수 있음. 깊은복사 (Deep Copy)객체의 모든 데이터를 복사하여 새로운 메모리 공간에 독립적인 복사본을 만든다.복사된 객체는 독립적으로 존재하기 때문에 원본 객체가 삭제되어도 복사된 객체는 영향을 받지 않음결론얕은 복사 : 메모리 주소를 공유하며, 원본 객체와 복사본이 같은 메모리 공간을 참조한다. 이로 인해 메모리 관리에 주의가 필요하다.깊은 복사 : 각 객체가 독립적인 메모리 공간을 가지므로 메모리 누수나 잘못된 접근을 방지할 수 있다.

C++/개념정리 2024.12.30

C++[Dangling Pointer, Double Free, 스마트 포인터]

Dangling Pointer메모리에서 더 이상 유효하지 않은 주소를 가리키고 있는 포인터를 의미한다.포인터는 주소를 참조하는데 그 주소에 있는 메모리가 해제됐을 때 실행을 하면 프로그램에 심각한 문제를 일으킬 수 있다.주요 발생 원인함수가 종료된 후, 그 함수의 지역 변수를 가리키는 포인터가 남아 있을 때.동적 메모리 해제 후 그 메모리 주소를 가리키는 포인터가 남아 있을 때.객체가 소멸한 후, 그 객체의 주소를 가리키는 포인터가 남아 있을 때.나올 수 있는 문제점Dangling Pointer를 통해 접근할 경우, 프로그램이 예기치 않게 동작할 수 있다.잘못된 메모리 접근으로 인해 다른 변수나 데이터가 손상될 수 있다.접근 권한이 없는 메모리를 참조하면 프로그램 충돌이 일어날 수 있다.Double Fr..

C++/개념정리 2024.12.30

C++[스택 메모리, 힙 메모리]

스택 메모리(Stack Memory)스택 메모리는 함수 호출 시 자동으로 할당되는 메모리 영역이다. 함수가 호출될 때 지역변수와 매개변수가 스택에 저장됨.스택 메모리의 특징함수가 종료되면 해당 함수에서 사용한 메모리가 자동으로 해제되어 메모리 관리가 편하다.빠른 메모리 할당과 해제가 가능하다.스택은 크기가 작아 너무 많은 메모리를 저장할 수 없다.컴파일 타임에 메모리가 크기가 결정되기 때문에 타입에 대한 안정성이 보장된다.{int x = 0; // 스택메모리에 할당}//함수 종료선언과 함께 메모리 해제힙 메모리힙 메모리는 프로그래머가 명시적으로 메모리를 할당하고 해제하는 영역이다. 동적 메모리 할당을 통해 사용됨.힙 메모리 특징필요한 만큼 메모리를 할당할 수 있어, 스택보다 더 큰 메모리를 사용할 수 있..

C++/개념정리 2024.12.30

2024.12.30[시간대]

시간대朝(あさ) : 아침朝 : 아침 조艹(풀 초), 日(해 일), 月(달 월)이 합쳐진 합성문자다 달이 저물고 해가 뜨며 식물들이 햇빛을 받는걸 생각하면 외우기 편하다.  昼(ひる) : 점심晝 : 낮 주(일본에서는 昼)聿(붓 율), 日(날 일)의 합성문자이지만 聿(붓 율)자는 畫(그을 획)의 생략으로 보기 때문에 밤과 낮의 경계를 구획한다는 의미로 본다. 夕(ゆう) : 저녁夕 : 저녁 석글자의 자원은 설문해자에 따르면 달의 절반이 드러난 모양을 본떴다고 합니다. 夜(よる) : 밤夜 : 밤 야헷갈리기 쉬운데 夕(저녁 석)자와 亦(또 역)자의 합성문자이다.

2024.12.29[직순열]

직순열이란? 서로다른 n개의 원소에서 r개를 택하여 순서에 상관 있게 배열하는 경우의 수.예제[숫자카드가 1,2,3,4의 숫자가 쓰인 숫자카드가 있다. 이 카드중 3개를 사용하여 세자리 수를 만들 때 나올 수 있는 수의 가짓수는?] 이라는 질문을 받았을 때 일단 간단하게 펼쳐서 풀어보겠다.왼쪽처럼 생긴게 첫숫자 1~4까지 총 4가지가 나올것이다. 그렇다면 정답은 4x3x2가 된다. 5가지 종류에서 3개를 쓰는거는 5x4x3이 될 것이다. 이걸 수학 공식으로는 nPr이라고 표현한다.nPr 공식nPr은 간단한 공식이다. 위에 풀어논것을 보면 알겠지만 정답은 nx(n-1)x(n-2).... (n-r)까지 간다 우리는nx(n-1)x(n-2)….(n-r+1)(n-r)x(n-r-1)….3x2x1를 n!(팩토리얼)로..