diff --git a/function.xlsx b/function.xlsx index b9bbeec..dffd3d3 100644 Binary files a/function.xlsx and b/function.xlsx differ diff --git a/programmers/Week_7.ipynb b/programmers/Week_7.ipynb new file mode 100644 index 0000000..4c05205 --- /dev/null +++ b/programmers/Week_7.ipynb @@ -0,0 +1,64 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 가장 가까운 같은 글자\n", + "\n", + "- 문자열 `s`가 주어졌을 때, `s`의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.\n", + "\n", + "- 예를 들어, `s`=\"banana\"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.\n", + " - b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.\n", + " - a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.\n", + " - n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.\n", + " - a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.\n", + " - n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.\n", + " - a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.\n", + "\n", + "- 따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.\n", + "\n", + "- 문자열 `s`이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.\n", + "\n", + "#### 제한사항\n", + "\n", + "- 1 ≤ `s`의 길이 ≤ 10,000\n", + " - `s`은 영어 소문자로만 이루어져 있습니다.\n", + "\n", + "#### 입출력 예\n", + "\n", + "| s | result |\n", + "| --- | --- |\n", + "| \"banana\" | [-1, -1, -1, 2, 2, 2] |\n", + "| \"foobar\" | [-1, -1, 1, -1, -1, -1] |" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def solution(s):\n", + " answer = []\n", + " return answer\n", + "\n", + "print(solution(\"banana\"))\n", + "print(solution(\"foobar\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/programmers/book_practice/chap04.ipynb b/programmers/book_practice/chap04.ipynb new file mode 100644 index 0000000..953406b --- /dev/null +++ b/programmers/book_practice/chap04.ipynb @@ -0,0 +1,123 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. 코딩 테스트 필수 문법\n", + "\n", + "## 4-1. 빌트인 데이터 타입" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n", + "13\n", + "9\n", + "-14\n", + "52\n", + "3\n" + ] + } + ], + "source": [ + "a = 13\n", + "b = 4\n", + "\n", + "print(a & b)\n", + "print(a | b)\n", + "print(a ^ b)\n", + "print(~a)\n", + "print(a << 2)\n", + "print(a >> 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "10 % 3.2 = 0.4 이어야 하는데 Python에서는 0.39999999999999947 입니다. 이런 이유는 Python이 부동소수형 데이터를 이진법으로 표현하기 때문입니다. 표현 과정에서 발생하는 이런 미세한 오차를 처리하기 위해 `엡실론(epsilon)`이라는 작은 허용 오차 값을 사용하여 두 부동소수점 값이 \"거의 같은지\" 비교합니다." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.39999999999999947\n" + ] + } + ], + "source": [ + "print(10.0 % 3.2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4-2. 컬렉션 데이터 타입" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "apple: 1\n" + ] + } + ], + "source": [ + "my_dict = {}\n", + "my_dict[\"apple\"] = 1\n", + "my_dict[\"banana\"] = 2\n", + "my_dict[\"orange\"] = 3\n", + "\n", + "key = \"apple\"\n", + "\n", + "if key in my_dict:\n", + " value = my_dict[key]\n", + " print(f\"{key}: {value}\")\n", + "else:\n", + " print(\"{key}는 딕셔너리에 존재하지 않습니다.\")" + ] + } + ], + "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.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/programmers/book_practice/chap05.ipynb b/programmers/book_practice/chap05.ipynb new file mode 100644 index 0000000..44b5946 --- /dev/null +++ b/programmers/book_practice/chap05.ipynb @@ -0,0 +1,45 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ddec45a9", + "metadata": {}, + "source": [ + "# 5. 배열\n", + "\n", + "## 5-4. 몸풀기 문제\n", + "\n", + "### 1. 배열 정렬하기\n", + "\n", + "- 정수 배열을 정렬해서 반환하는 solution() 함수를 완성하세요.\n", + "\n", + "#### 제한사항\n", + "\n", + "- 정수 배열의 길이는 2 이상 10^5 이하입니다.\n", + "\n", + "- 정수 배열의 각 데이터 값은 -100,000 이상 100,000 이하입니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "145c4686", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}