안녕하세요. 오늘은 수학의 새로운 주제인 집합론(Set Theory)와 함께 시작해보도록 하겠습니다. 혹시 수학이 과학의 언어라는 말을 들어보셨나요? 특히, 물리학은 수학 없이는 존재하지 못할 정도로 수학의 영향력이 아주 강력합니다. 이와 비슷한 말로 집합론은 수학의 언어라는 말이 있을 정도로 현대 수학의 모든 곳에는 집합론의 기본 개념이 녹아있습니다. 특히, 위상수학(Topology)는 집합론 없이는 절대 이야기 할 수 없는 내용이죠. 이와 같이 집합론은 현대 수학에서 굉장히 중요한 부분을 차지하고 있기 때문에 본격적으로 수학 전공을 공부하기 위해서는 집합론은 필수입니다. 앞으로 다양한 수학 관련 포스팅을 게재할 예정입니다. 이를 위해서는 집합론을 빼놓고 이야기할 수 없었습니다. 그래서 오늘은 간단한 ..
안녕하세요. 지난 포스팅의 미적분학 - 접평면과 선형근사에서는 일변수 함수의 선형근사의 개념을 다변수 함수로 확장하는 방법에 대해서 알아보았습니다. 오늘은 다변수 함수의 미분가능성에 대해서 알아보도록 하겠습니다. 정의1. 미분가능성(Differentiability) 함수 $z = f(x, y)$가 있다고 했을 때 $\Delta z = f_{x}(a, b)\Delta x + f_{y}(a, b)\Delta y + \epsilon_{1} \Delta x + \epsilon_{2} \Delta y$으로 표현된다면 함수 $f$는 점 $(a, b)$에서 미분가능하다. 설명 다변수 함수의 미분가능성에 대해서 설명하기 위해 간단한 예시를 들어보도록 하겠습니다. 일단, 함수 $z = f(x, y)$가 연속이라고 가정하..
안녕하세요. 지난 포스팅의 BOJ 2577번 : 숫자의 개수에서는 1차원 배열을 이용하여 문제를 해결해보았습니다. 이번에도 동일한 문제를 풀어보도록 하죠. 핵심 포인트 반복문 1차원 배열 : 리스트 자료형 제출 코드 numbers = [int(input()) for _ in range(10)] count = [0] * 42 for number in numbers : if count[number % 42] == 0 : count[number % 42] += 1 print(sum(count)) 해설 문제의 입력은 한 줄에 한 개씩 숫자를 입력받습니다. 따라서, 반복문을 이용해서 하나 씩 입력을 받은 뒤 이를 숫자 배열에 담아주면 되겠죠. 파이썬에서는 이러한 리스트를 만드는 데 더욱 짧은 코드를 만들 수 있게..
안녕하세요. 지난 포스팅의 BOJ 2562번 : 최댓값에서는 굳이 1차원 배열을 사용하지 않고 문제를 풀어보았습니다. 오늘은 1차원 배열을 적용해서 다른 문제를 풀어보도록 하겠습니다. 핵심 포인트 반복문 1차원 배열 : 리스트 자료형 제출 코드 number = int(input()) * int(input()) * int(input()) count = [0] * 10 while True : count[number % 10] += 1 number //= 10 if number == 0 : for i in count : print(i) break 해설 기본적으로 입력은 한 줄에 한 개씩 총 3개의 숫자를 입력받습니다. 하지만, 저희가 궁극적으로 필요한 것은 3개의 숫자의 곱셈이기 때문에 int(input())..
안녕하세요. 지난 포스팅의 BOJ 10818번 : 최소, 최대에서는 파이썬 1차원 배열인 리스트 자료형의 내장함수인 max 함수와 min 함수를 이용해서 문제를 풀어보았습니다. 오늘도 역시 최댓값을 출력하는 문제이지만 다른 점은 항상 9개의 숫자를 받는 다는 점과 최댓값이 몇 번째로 입력받았는지까지 출력해야합니다. 핵심 포인트 반복문 제출 코드 max_idx = 0 max_value = 0 for idx in range(9) : tmp = int(input()) if tmp >= max_value : max_value = tmp max_idx = idx + 1 print(max_value) print(max_idx) 해설 해당 문제는 1차원 배열 파트에 들어가있긴 하지만 리스트 자료형을 사용하지 않고도 ..
안녕하세요. 지난 포스팅의 미적분학 - 편미분에서는 편미분의 정의와 다변수 함수가 연속이라면 변수의 순서를 바꾸어 편미분하여도 동일한 결과를 준다는 클레로 정리(Clairaut's Theorem)에 대해서 알아보았습니다. 오늘은 미적분학 - 선형근사에서도 보았던 개념을 다변수 함수에 그대로 적용해보는 시간을 가져보도록 하겠습니다. 1. 접평면(Tangent plane) 먼저, 접평면에 대해서 설명드리도록 하겠습니다. 이와 동일한 개념으로 2차원에서는 접선(Tangent line)이 있습니다. 3차원으로 차원으로 올라가면서 선이 평면으로 바뀐 거 밖에 없으니 쉽게 이해하실 수 있습니다. 일단 곡면 $S$가 $z = f(x, y)$로 표현된다고 가정하겠습니다. 이때, 함수 $f$는 연속인 일계 도함수를 가지..
안녕하세요. 지난 포스팅의 BOJ 1110번 : 더하기 사이클에서는 반복문과 조건문을 활용하여 복잡한 구현문제를 풀어보았습니다. 오늘부터는 1차원 배열과 관련된 문제를 풀어보도록 하겠습니다. 핵심 포인트 반복문 1차원 배열 : 리스트 자료형 min & max 함수 파이썬에서 1차원 배열은 리스트 자료형으로 구현될 수 있습니다. 이번 문제는 숫자 배열을 입력받았을 때 최소값과 최대값을 순서대로 출력하는 것입니다. 파이썬에서는 리스트 내의 최소값과 최대값을 쉽게 찾을 수 있는 min(iterable) 함수와 max(iterable) 함수를 제공해주고 있습니다. 따라서, 저희는 이 함수들을 이용해서 빠르게 문제를 풀어보도록 하겠습니다. N = int(input()) numbers = list(map(int, ..
안녕하세요. 지난 포스팅의 BOJ 10951번 : A + B - 4에서는 while문과 예외처리 구문(try ~ except ~)를 이용해서 문제를 풀어보았습니다. 오늘은 반복문을 중심으로 하는 마지막 문제를 풀어보도록 하겠습니다. 핵심 포인트 반복문 : while문 조건문 일단, 문제의 예제를 통해 생각해보도록 하겠습니다. 26이 입력된다고 가정하죠. 그러면 아래의 과정으로 새로운 숫자가 만들어집니다. 1. 새로운 수의 십의 자리 = 26의 일의 자리 = 6 2. 새로운 수의 일의 자리 = 26의 십의 자리 + 26의 일의 자리 = 6 + 2 = 8 따라서, 새로운 수는 68이 됩니다. 하지만 28 $\neq$ 68이기 때문에 한번 더 해보도록 하죠. 1. 새로운 수의 십의 자리 = 68의 일의 자리 ..