Skip to content

Commit ae4e3b7

Browse files
committed
up
1 parent 0865963 commit ae4e3b7

File tree

8 files changed

+4415
-4981
lines changed

8 files changed

+4415
-4981
lines changed

functions.ipynb

Lines changed: 2206 additions & 1670 deletions
Large diffs are not rendered by default.

iteration-for.ipynb

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2782,6 +2782,230 @@
27822782
"## 연습문제"
27832783
]
27842784
},
2785+
{
2786+
"cell_type": "markdown",
2787+
"id": "601dab5c",
2788+
"metadata": {},
2789+
"source": [
2790+
"**문제 11**"
2791+
]
2792+
},
2793+
{
2794+
"cell_type": "markdown",
2795+
"id": "3c39ead5",
2796+
"metadata": {},
2797+
"source": [
2798+
"아래 함수는 양의 정수 `n`과 함께 호출되면 `n x n` 모양의 격자무늬를 출력한다."
2799+
]
2800+
},
2801+
{
2802+
"cell_type": "code",
2803+
"execution_count": null,
2804+
"id": "b18b8483",
2805+
"metadata": {},
2806+
"outputs": [],
2807+
"source": [
2808+
"pm = \"+ - - \"\n",
2809+
"ps = \"| \"\n",
2810+
"plus_sign = \"+\"\n",
2811+
"pipe_sign = \"|\"\n",
2812+
"\n",
2813+
"def print_pm(n):\n",
2814+
" print(pm * n + plus_sign)\n",
2815+
"\n",
2816+
"def print_ps(n):\n",
2817+
" ps_line = ps * n + pipe_sign\n",
2818+
" print(ps_line, ps_line, sep=\"\\n\")\n",
2819+
"\n",
2820+
"def grid(n):\n",
2821+
" for count in range(n):\n",
2822+
" print_pm(n)\n",
2823+
" print_ps(n)\n",
2824+
" count += 1\n",
2825+
" \n",
2826+
" print_pm(n)"
2827+
]
2828+
},
2829+
{
2830+
"cell_type": "code",
2831+
"execution_count": null,
2832+
"id": "b587549d",
2833+
"metadata": {},
2834+
"outputs": [
2835+
{
2836+
"name": "stdout",
2837+
"output_type": "stream",
2838+
"text": [
2839+
"+ - - + - - + - - +\n",
2840+
"| | | |\n",
2841+
"| | | |\n",
2842+
"+ - - + - - + - - +\n",
2843+
"| | | |\n",
2844+
"| | | |\n",
2845+
"+ - - + - - + - - +\n",
2846+
"| | | |\n",
2847+
"| | | |\n",
2848+
"+ - - + - - + - - +\n"
2849+
]
2850+
}
2851+
],
2852+
"source": [
2853+
"grid(3)"
2854+
]
2855+
},
2856+
{
2857+
"cell_type": "markdown",
2858+
"id": "04789601",
2859+
"metadata": {},
2860+
"source": [
2861+
"위 `grid()` 함수를 일반화하여 직사각형 모양의 격자무늬를 출력하는\n",
2862+
"`grid_gen()` 함수를 구현하라.\n",
2863+
"사용되는 두 개의 매개 변수와 반환값은 다음과 같아야 한다.\n",
2864+
"\n",
2865+
"- `n`: 세로 격자 칸 개수\n",
2866+
"- `m`: 가로 격자 칸 개수\n",
2867+
"- 반환값: `n*m`\n",
2868+
"\n",
2869+
"또한, 예를 들어, `grid_gen(2, 3)` 을 실행하면 아래 모양의 격자를 그려야 한다.\n",
2870+
"\n",
2871+
"```\n",
2872+
"+ - - + - - + - - +\n",
2873+
"| | | |\n",
2874+
"| | | |\n",
2875+
"+ - - + - - + - - +\n",
2876+
"| | | |\n",
2877+
"| | | |\n",
2878+
"+ - - + - - + - - +\n",
2879+
"```\n",
2880+
"\n",
2881+
"힌트: `grid()` 함수에 매개 변수 `m`을 추가할 때 어느 부분을 수정해야 하는지 알아낸다."
2882+
]
2883+
},
2884+
{
2885+
"cell_type": "markdown",
2886+
"id": "76eb4c8e",
2887+
"metadata": {},
2888+
"source": [
2889+
"**답**"
2890+
]
2891+
},
2892+
{
2893+
"cell_type": "markdown",
2894+
"id": "35f5e30b",
2895+
"metadata": {},
2896+
"source": [
2897+
"`grid(n)`이 호출되었을 때 격자 칸의 가로, 세로 개수가 `n`에 의해 결정된다.\n",
2898+
"이에 대한 보다 자세한 설명은\n",
2899+
"[(필수 예제) 함수](https://colab.research.google.com/github/codingalzi/pybook/blob/master/examples/examples-functions.ipynb#scrollTo=8ca4c478)를\n",
2900+
"참고한다.\n",
2901+
"\n",
2902+
"- 가로 격자 칸 개수: `print_pm(n)` 과 `print_ps(n)`에서의 `n`에 의해 결정됨\n",
2903+
"- 세로 격자 칸 개수: `for count in range(n)`에서의 `n`에 의해 결정됨.\n",
2904+
"\n",
2905+
"따라서 가로와 세로의 격자 칸 개수를 달리 하려면 \n",
2906+
"앞서 언급된 두 부분에서의 `n`의 사용을 달리 해야 한다.\n",
2907+
"아래 코드는 `n`은 세로 격자 칸 개수를, `m`은 가로 격자 칸 개수를 지정한다."
2908+
]
2909+
},
2910+
{
2911+
"cell_type": "code",
2912+
"execution_count": null,
2913+
"id": "3fbb1f6f",
2914+
"metadata": {},
2915+
"outputs": [],
2916+
"source": [
2917+
"pm = \"+ - - \"\n",
2918+
"ps = \"| \"\n",
2919+
"plus_sign = \"+\"\n",
2920+
"pipe_sign = \"|\"\n",
2921+
"\n",
2922+
"def print_pm(m): # m: 가로 격자 칸 개수\n",
2923+
" print(pm * m + plus_sign)\n",
2924+
"\n",
2925+
"def print_ps(m):\n",
2926+
" ps_line = ps * m + pipe_sign\n",
2927+
" print(ps_line, ps_line, sep=\"\\n\")\n",
2928+
"\n",
2929+
"def grid_gen(n, m):\n",
2930+
" for count in range(n): # n: 세로 격자 칸 개수\n",
2931+
" print_pm(m)\n",
2932+
" print_ps(m)\n",
2933+
" count += 1\n",
2934+
" \n",
2935+
" print_pm(m)\n",
2936+
" \n",
2937+
" return n * m # 반환값: 격자 칸 수"
2938+
]
2939+
},
2940+
{
2941+
"cell_type": "code",
2942+
"execution_count": null,
2943+
"id": "f7e1ae1d",
2944+
"metadata": {},
2945+
"outputs": [
2946+
{
2947+
"name": "stdout",
2948+
"output_type": "stream",
2949+
"text": [
2950+
"+ - - + - - + - - +\n",
2951+
"| | | |\n",
2952+
"| | | |\n",
2953+
"+ - - + - - + - - +\n",
2954+
"| | | |\n",
2955+
"| | | |\n",
2956+
"+ - - + - - + - - +\n"
2957+
]
2958+
},
2959+
{
2960+
"data": {
2961+
"text/plain": [
2962+
"6"
2963+
]
2964+
},
2965+
"metadata": {},
2966+
"output_type": "display_data"
2967+
}
2968+
],
2969+
"source": [
2970+
"grid_gen(2, 3)"
2971+
]
2972+
},
2973+
{
2974+
"cell_type": "code",
2975+
"execution_count": null,
2976+
"id": "8b840326",
2977+
"metadata": {},
2978+
"outputs": [
2979+
{
2980+
"name": "stdout",
2981+
"output_type": "stream",
2982+
"text": [
2983+
"+ - - + - - + - - + - - + - - +\n",
2984+
"| | | | | |\n",
2985+
"| | | | | |\n",
2986+
"+ - - + - - + - - + - - + - - +\n",
2987+
"| | | | | |\n",
2988+
"| | | | | |\n",
2989+
"+ - - + - - + - - + - - + - - +\n",
2990+
"| | | | | |\n",
2991+
"| | | | | |\n",
2992+
"+ - - + - - + - - + - - + - - +\n"
2993+
]
2994+
},
2995+
{
2996+
"data": {
2997+
"text/plain": [
2998+
"15"
2999+
]
3000+
},
3001+
"metadata": {},
3002+
"output_type": "display_data"
3003+
}
3004+
],
3005+
"source": [
3006+
"grid_gen(3, 5)"
3007+
]
3008+
},
27853009
{
27863010
"cell_type": "markdown",
27873011
"id": "e87bb41b-3c83-4d6e-8a79-b1b0fe600fb9",

0 commit comments

Comments
 (0)