-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
256 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 4, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"0\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"h, w = map(int, input().split())\n", | ||
"block = list(map(int, input().split()))\n", | ||
"lt, rt = 0, w-1\n", | ||
"lt_max, rt_max = block[lt], block[rt]\n", | ||
"res = 0\n", | ||
"\n", | ||
"while lt < rt:\n", | ||
" lt_max = max(lt_max, block[lt])\n", | ||
" rt_max = max(rt_max, block[rt])\n", | ||
"\n", | ||
" if lt_max <= rt_max:\n", | ||
" res += lt_max - block[lt]\n", | ||
" lt += 1\n", | ||
" else:\n", | ||
" res += rt_max - block[rt]\n", | ||
" rt -= 1\n", | ||
"print(res)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "base", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.9.7" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### 클로저란?\n", | ||
"클로저는 함수 안에 내부 함수를 구현하고 그 내부 함수를 리턴하는 함수를 말한다. \n", | ||
"이 때 외부 함수의 변수값 등을 내부 함수에 전달할 수 있다." | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 3, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# 예를 들어 어떤 수에 3을 곱해 리턴하는 함수와 어떤 수에 5를 곱해서 리턴하는 함수가 있다고 가정하자\n", | ||
"# 이 때 6,7,8,... 함수를 각각 만드는 것은 비효율적일 것 이다.\n", | ||
"def mul3(n):\n", | ||
" return n * 3\n", | ||
"\n", | ||
"def mul5(n):\n", | ||
" return n * 5" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"30\n", | ||
"50\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# 이와 같이 클래스를 사용하면 비효율적인 문제를 해결할 수 있다.\n", | ||
"class Mul:\n", | ||
" def __init__(self, m):\n", | ||
" self.m = m\n", | ||
" \n", | ||
" def mul(self, n):\n", | ||
" return self.m * n\n", | ||
"\n", | ||
"if __name__ == '__main__':\n", | ||
" mul3 = Mul(3)\n", | ||
" mul5 = Mul(5)\n", | ||
"\n", | ||
" print(mul3.mul(10))\n", | ||
" print(mul5.mul(10))" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 5, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"30\n", | ||
"50\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# __call__ 메서드를 이용하여 다음과 같이 개선할 수도 있다.\n", | ||
"class Mul:\n", | ||
" def __init__(self, m):\n", | ||
" self.m = m\n", | ||
"\n", | ||
" def __call__(self, n):\n", | ||
" return self.m * n\n", | ||
"\n", | ||
"if __name__ == '__main__':\n", | ||
" Mul3 = Mul(3)\n", | ||
" Mul5 = Mul(5)\n", | ||
"\n", | ||
" print(Mul3(10))\n", | ||
" print(Mul5(10))" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 9, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"30\n", | ||
"50\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# __call__ 함수를 사용하는 것이 일반적이긴 하지만, 더 간편한 방법이 있다.\n", | ||
"# 외부 함수 mul 안에 내부함수 wrapper를 구현했다. 그리고 외부함수는 내부함수 wrapper를 반환한다.\n", | ||
"# mul함수호출 시 인수로 받은 m 값을 wrapper 함수에 저장하여 리턴한다. 이런 mul과 같은 함수를 파이썬에서는 클로저(closer)라고한다.\n", | ||
"def mul(m):\n", | ||
" def wrapper(n):\n", | ||
" return m * n\n", | ||
" return wrapper\n", | ||
"\n", | ||
"if __name__ == '__main__':\n", | ||
" mul3 = mul(3)\n", | ||
" mul5 = mul(5)\n", | ||
"\n", | ||
" print(mul3(10))\n", | ||
" print(mul5(10))" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "base", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.9.7" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters