세상에 이상을 더하다.

지금, Rooti와 함께라면.

Rooti는 상상을 만드는 공방입니다.

Lecture 24

팩토리얼과 순열, 조합

팩토리얼 팩토리얼은 !으로 표현하는데 n!은 1부터 n보다 작거나 같은 모든 자연수의 곱이다.(*0!=1이다.) n!= 1×2×···×(n-1)×n n!은 n명을 1자로 줄 세울 수 있는 경우의 수와 같다. 첫 번째 자리에 올 수 있는 사람 n명, 두번째 자리에 올 수 있는 사람은 첫번째 자리에 간 1사람을 제외한 n-1명, 이와 같은 과정을 반복하면 n-1번째 자리에 올 수 있는 사람은 2명, n번째 자리에 올 수 있는 사람은 1명이다. n명을 1자로 줄 세울 수 있는 경우의 수는 이를 모두 곱한 값과 같으므로 n!과 같음을 알 수 있다. 순열 순열은 서로 다른 n개의 물건 중 r개를 선택하여 나열하는 경우의 수이다. nPr의 형태로 표현한다. 이를 팩토리얼로 나타내보자. 첫번째 자리에 올 수 있는 물..

미적분의 기본정리 2 증명 (F.T.C. 2)

미적분의 두 기본정리가 중요하다는 것을 또 짚고 넘어가지는 않겠습니다. 거두절미하고, 두 번째 정리는 아래와 같습니다. 첫 번째 정리는 부정적분에 대해서 설명했고, 두 번째 정리는 정적분에 대해 설명합니다. 이 정리는 역사적으로도 매우 뜻깊습니다. 어떤 구역의 넓이를 구한다는 것은 굉장히 중요한 일입니다. 고대 사회에서부터 이는 마찬가지였고, 토지의 넓이를 구하는 등의 이유로 말이죠. 그런데 과거에 넓이를 구했던 방법은, 현재로 치면 '구분구적법'에 가깝습니다. 구역을 매우 잘게 쪼개서, 그것들의 넓이를 모두 합하는 것이죠. 그 구역이 복잡한 형태였다면 더 힘들 일이 되었을 테고, 보다 정확한 넓이 계산을 위해서는 더 잘게 잘라야 하므로 보통 고역이 아니었습니다. 그런데 이제 적분이라는 개념이 등장합니다..

Lecture/Calculus 2023.01.30

미적분의 기본정리 1 증명 (F.T.C. 1)

'기본'이라는 단어는 모든 것의 시작이 됩니다. 미적분의 기본정리는 미분과 적분이라는 대학수학의 두 꽃을 연결짓는 시초이며, 미적분학의 가장 중요한 정리라고 해도 과언이 아니죠. 미적분학의 기본 정리는 두 가지가 있으며, 그 중 첫 번째 정리가 이것입니다. f가 [a,b]에서 연속일 때, g를 다음과 같이 정의하면, g는 [a,b]에서 연속이며 (a,b)에서 미분가능하고, g'(x)=f(x)입니다. 라는 것이 이 정리의 내용입니다. 이것은 다시 위 식과도 똑같은 의미입니다. 간단하게 말해, 부정적분하고 미분하면 원래 함수라는 뜻입니다. 이제 이것을 증명합시다. 우선 (a, b)에 속하는 x에 대해, x+h도 (a, b)에 속하는 h가 존재하겠죠. (단 h가 0은 될 수 없습니다.) 그러면, 앞서 정의한 ..

Lecture/Calculus 2023.01.29

여사건

여사건 여사건은 어떠한 사건이 일어나지 않는 사건을 의미한다. 경우의 수 문제를 풀 때 '적어도'라는 말이 있을 경우 여사건을 이용하여 문제를 풀면 더 쉽게 풀 수 있다. 이전글의 예제를 여사건을 이용하여 풀어보자 예제) 1~9의 숫자로 구성된 세 자리 자연수 중 적어도 하나의 1이 포함되어 있는 경우의 수를 구하시오. 이는 (전체 경우의 수) - (1이 하나도 포함되어 있지 않은 세자리 자연수) *여기서 전체 경우의 수는 1~9의 숫자로 구성된 세자리 자연수의 개수를 의미한다. 로 구할 수 있다. 전체 경우의 수: 9×9×9=729 1이 하나도 포함되어 있지 않은 세자리 자연수: 8×8×8=512 따라서 답은 729-512=217 이전글에서 구한 답과 같음을 알 수 있다.

포함배제의 원리

포함배제의 원리 포함배제의 원리는 집합에서 주로 사용된다. 하지만 경우의 수를 구할 때도 사용된다. 예제를 통해 포함배제의 원리가 무엇인지 알아보도록 하자 예제) 1~9의 숫자로 구성된 세 자리 자연수 중 적어도 하나의 1이 포함되어 있는 경우의 수를 구하시오. 쉽게 생각해보면 백의 자리 숫자가 1일 경우, 십의 자리 숫자가 1일 경우, 일의 자리 숫자가 1일 경우를 전부 세어서 더하면 된다. 하지만 이렇게 계산하면 백의 자리 숫자와 십의 자리 숫자가 모두 1인 경우 등 중복되는 경우가 생긴다. 포함배제의 원리는 이러한 중복되는 경우를 빼고 더하면서 경우의 수를 구하는 방법을 말한다. 백의 자리 숫자가 1일경우, 십의 자리 숫자가 1일 경우, 일의 자리 숫자가 1일 경우를 벤다이어그램으로 표현해 보면 위..

수형도와 교란순열

수형도 경우의 수는 어떻게 풀어야 할지 모르겠을 때 노가다라도 하면 답을 구할 수 있는 게 매력이라고 생각한다. 하지만 노가다도 효율적으로 해야 한다. 효율적인 노가다를 위한 방법이 수형도이다. 예제를 통해 수형도가 뭔지 알아보도록 하자. 예제) 4명의 사람이 모자를 쓰고 있었는데 어쩌다보니 모자가 다 섞여버렸다. 모자를 아무거나 골라서 썼을 때 4명 모두가 자신의 모자가 아닌 다른 사람의 모자를 썼을 경우의 수를 구하여라 풀이) 사람을 각각 1, 2, 3, 4라고 하고 수형도를 그려보면 다음과 같이 나온다. 따라서 경우의 수는 9가지 이다. 수형도를 이용하면 모든 경우의 수를 빠짐없이 셀 수 있다. 교란순열 교란순열이란 위의 예제처럼 각 원소의 위치가 바뀌었을 때 모든 원소가 원래 위치가 아닌 다른 위..

합의 법칙과 곱의 법칙

합의 법칙 두 사건 A, B가 동시에 일어나지 않을 때 두 사건 A, B가 일어날 경우의 수가 각각 a, b일 때 사건 A 또는 B가 일어날 경우의 수는 a+b이다. 곱의 법칙 두 사건 A, B가 일어날 경우의 수가 각각 a, b일 때 사건 A와 B가 동시에 일어날 경우의 수는 a×b이다. 예제) 서로 다른 주사위 2개를 던져서 나올 수 있는 경우의 수를 구하시오.(단, 주사위를 적어도 한 개는 던져야 하나, 모두 던질 필요는 없다) 풀이) 서로 다른 두 주사위를 각각 A, B주사위라고 하자 1) 주사위 1개를 던질 경우의 수 -A주사위: 6가지 -B주사위: 6가지 =>12가지 *A주사위와 B주사위를 던지는 경우는 동시에 일어나지 않는 사건이므로 A주사위를 던질 때 나올 수 있는 경우의 수인 6가지와 B..

싱글톤 패턴 : Singleton pattern

싱글톤이 왜 필요한가? 평소에 우리가 클래스를 만드는 이유가 무엇인지 곰곰이 생각해 보자. 클래스는 설계도와 똑같이 생긴 여러 복제품을 찍는것에 그 의의가 있었고 우린 그렇게 사용해 왔다. 그런데 만약 우리가 단 하나의 객체가 필요하거나 여러 객체 중 외부 클래스에서 접근해야 하는 객체가 존재한다면 어떡해야 할까? 그럴 때 사용하는 것이 바로 싱글톤 패턴이다. 싱글톤 패턴 : Singleton pattern 기본적인 싱글톤 패턴은 아래의 코드와 같다. 이 코드와 아래의 코드에서 생성자를 private, public으로 선언한것이 다르다, 주의 바란다! 일단 우리는 딱 하나의 인스턴스만 만든다고 해보자. 버 X킹의 회사를 예로 들겠다. 우리가 버X킹을 위한 프로그램을 만들고 있는데, 버X킹 본사는 전 세계..

Lecture/Java 2023.01.27

멈춰있는 것들: Static Variable, Static Method

메모리 구조와 함께 Static 변수와 메서드를 공부해 보자 메모리 구조 위 사진에서 알 수 있듯이 자바의 메모리 구조는 크게 데이터 영역, 힙 영역, 스택 영역 으로 나눌 수 있다. 앞 글에서 배운 개념들을 메모리의 관점에서 설명해 보자. 여러 참조 변수들과 지역 변수들, 매개변수들 등과 같은 변수들이 모두 실행될 때 스택 영역에 생성된다. 그리고 각 클래스들로부터 만들어진 인스턴스들은 힙 영역에 자리 잡히고 인스턴스 변수들도 마찬가지이다. 쉽게 생각하면 참조변수들은 힙 영역에 존재하는 인스턴스가 가지고 있는 "주소"를 가지고 있다고 생각하면 된다. 마지막으로 데이터 영역인데 프로그램이 실행될때 딱 한 번만 선언되는 static변수들이 여기에 존재한다. 이 글에서 알아볼것이 바로 static 변수이다...

Lecture/Java 2023.01.25

이거 예약어 : this reserved word

예약어(Reserved word) 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들이다. 예를 들어 C에서 return은 변수명이나 함수명으로 사용할 수 없다. 그런 단어들은 키워드이다. (위키피디아) 말 그대로,, 이미 특정한 의미로 사용되기 예약됨, 변수 이름이나 메서드로 사용하면 안 됨! 자신의 메모리를 가리키는 this 저번 글에서 잠시 언급한 예시를 다시 한번 보자. ( 수정사항 --> String[ ] coupons = new String[2]; ) 생성자도 결국 메서드 중 하나이니 생성자로 설명을 하겠다. 메서드에서 입력하는 값( 이 예시에서는 int memberID, String memberShip )의 이름과 각 인스턴스가 가지고 있는 ..

Lecture/Java 2023.01.25