|
2782 | 2782 | "## 연습문제" |
2783 | 2783 | ] |
2784 | 2784 | }, |
| 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 | + }, |
2785 | 3009 | { |
2786 | 3010 | "cell_type": "markdown", |
2787 | 3011 | "id": "e87bb41b-3c83-4d6e-8a79-b1b0fe600fb9", |
|
0 commit comments