호록이
로그인 후 게시글을 볼 수 있습니다.
그린
> [모구모구 수리연구소 - 여름방학 응용수리 무료특강 (7월 9일 ~)](https://www.mogumath.co.kr/goods/lecture_info/27) ## 오늘의 수업 방향 오늘은 여름방학 응용수리 무료특강 3회차에서 풀었던 문제를 복기해 보겠다. ## 복기 이번 특강에서는 최단경로, 역증가율, 가중평균 등을 중심으로 문제를 풀었다. 고등학교 때 `최단경로` 문제를 풀던 기억도 나고 간단히 이동할 수 있는 경우의 수를 차례대로 더해 나가는 방식이라 어렵지 않은 유형이었다~ 저번 특강에서도 풀었던 `일률` 문제도 어김없이 등장했는데 일의 양을 적절한 숫자로 정한 뒤, 공통으로 나누어지는 수를 기준으로 잡는 방법을 다시 정리해볼 수 있었다. 후반부에는 `가중평균`과 비율 문제를 풀면서, 합/불합격자의 평균 점수, 남녀 비율 등의 조건을 가중치와 거리비를 이용하여 긴 방정식을 세우지 않고 푸는 방법을 익혔다. 이렇게 두 집단의 비율을 같은 기준으로 통일한 뒤 차이를 비교하는 방식이 여러 문제로 공통으로 적용되니 많은 문제를 접해보는 게 중요할 것 같다. 모구쌤이 말씀했듯이 강의가 끝나도 끝난게 아닌게 복습이 제일 중요하므로 각 풀이법을 외울 정도로 여러 번 풀어보고 실전에서 바로 활용할 수 있도록 해야겠다.
그린
> 참고: 책 [혼자 공부하는 SQL](https://product.kyobobook.co.kr/detail/S000001810432){:target="_blank"} SQL을 공부하기 위해 맥 운영체제에서 (MySQL 서버 대신) docker와 MySQL을 활용한 로컬 환경 설정을 해보겠습니다. # 1. MySQL 로컬 환경 설정 ## 1-1. 애플리케이션 설치 - 아래 세 가지 모두 이미 로컬에 설치되어있으므로 방법 및 단계는 생략 (1) docker 설치 (2) MySQL Client 설치 (3) MySQL Workbench 설치 ## 1-2. docker 컨테이너 생성 (1) 독립적인 MySQL 컨테이너를 하나 만들고 실행 ```zsh docker run --name hongong --platform linux/amd64 -e MYSQL_ROOT_PASSWORD=0000 -p 3306:3306 -d mysql:8.0 ``` (2) 앞으로 명령어로 서버 시작/종료 가능 - docker start [컨테이너 NAMES] ```zsh # 시작 docker start hongong # 종료 docker stop hongong ``` (3) 잘 켜졌는지 확인 ```zsh docker ps ``` (3-1) - ID나 이름이 기억 안 날 때 아래 명령어 실행 후, 로컬에 존재하는 모든 컨테이너의 ID와 IMAGE, STATUS, NAMES 확인 가능 ```zsh docker ps -a ``` ## 1-3. MySQL Workbench 연결 (1) MySQL Connections + 클릭 (2) 연결 정보 입력 - Connection Name: hongongdb - Password: 0000 - Test Connection 클릭 후, Successfully 확인 - OK 버튼 클릭 ## 1-4. 터미널에서 docker로 띄운 mysql에 접속하기 - 현재 실행중인 docker 컨테이너에 아래 명령어로 접속하기 - 비밀번호는 설정했던 0000 (비밀번호를 입력할 때, 화면에 아무 글자도 표시되지 않지만, 정상적으로 입력되고 있는 것이니 0000을 치고 엔터를 누르면 됨) ```zsh docker exec -it hongong mysql -u root -p ``` ### 1-4-1. 자주 쓰는 명령어 ```zsh # 현재 데이터베이스(스키마) 목록 보기 show databases; # 터미널 나가기 exit; # 스키마 생성 create database [스키마 이름]; ```
그린
> [모구모구 수리연구소 - 여름방학 응용수리 무료특강 (7월 9일 ~)](https://www.mogumath.co.kr/goods/lecture_info/27) ## 1. 6주차 모구모구 응용수리 무료특강 후기 이번 6회차 특강에서는 거속시와 상대속도, 연속증가율, 지수법칙, 가중평균, 농도와 비율 등 여러 유형의 공기업 기출문제를 풀었다. 특히 이번 회차는 앞에서 배웠던 개념들이 다시 등장하면서 조금 더 다양한 문제에 적용해 볼 수 있었다. 가장 기억에 남았던 것은 거속시와 상대속도 문제였다. 같은 방향으로 움직이는 두 대상의 속력 차이를 이용하거나, 서로 반대 방향으로 움직일 때 속력을 더해서 상대속도를 구하는 문제를 여러 형태로 풀었다. 원형 트랙에서 서로 다른 속력으로 달리는 문제도 나왔는데, 누가 몇 바퀴를 도는지 하나하나 계산하기보다 속력비와 시간비를 이용해 관계를 먼저 잡는 방식이 훨씬 간단했다. 또 속력이 km/h인데 거리는 m로 주어지는 것처럼 단위가 서로 다른 문제에서는 계산 전에 단위를 맞추는 것이 중요했다. 예전에는 거속시 문제가 나오면 일단 거리=속력×시간부터 적고 봤는데, 이제는 같은 방향인지 반대 방향인지, 두 대상 사이의 거리가 줄어드는지 늘어나는지를 먼저 확인해야겠다는 생각이 들었다. 후반부에는 가중평균과 비율을 이용하는 문제가 많이 나왔다. 남녀 인원과 각각의 증감률이 주어진 문제처럼 두 집단의 비중이 서로 다를 때는 단순히 두 증감률의 평균을 구하면 안 되고, 각 집단이 차지하는 비중까지 함께 고려해야 했다. 6회차까지 들으면서 가장 크게 느끼는 점은 처음에는 서로 완전히 다른 문제처럼 보였던 것들이 사실 몇 가지 풀이 방식으로 계속 연결된다는 것이다. 거속시에서는 상대속도와 속력비, 가격 변화에서는 연속증가율, 인원이나 농도 문제에서는 가중평균과 거리비처럼 앞에서 배웠던 방법이 형태만 조금씩 바뀌어 반복해서 등장했다. 아직 혼자 문제를 풀 때는 어떤 방법을 써야 할지 바로 떠오르지 않는 경우도 있지만, 강의를 들으면서 ‘이거 전에 배웠던 방식인데?’라는 생각이 드는 문제가 점점 많아지고 있다 ㅎㅎ
그린
> 참고: [codetree Trail 0](https://www.codetree.ai/ko/trail-info/codetree-101){:target="_blank"}의 Chapter 1 - Lesson 2~3 # 1. 변수 > 데이터를 저장할 수 있는 메모리 공간의 이름 ```java (자료형) (변수명) = (담을 값); ``` ```java int age = 25; double height = 175.5; char ch = 'A'; String name = "Teddy"; boolean isStudent = true; Array arr = {1, 3, 5} ``` ## 1-1. 대입 연산자 `=` - 변수를 선언하고 값을 할당할 때 사용 - 좌변에 변수의 자료형과 변수명을, 우변에 값을 할당 ```java int a = 3; // 변수 a에 값 3을 대입 System.out.println(a); // 출력: 3 a = 10; // 변수 a에 새로운 값 10을 대입하여 이전 값 3을 변경 System.out.println(a); // 출력: 10 ``` --- ## 1-2. 변수 명명 규칙 - `알파벳`, `숫자`, `밑줄(_)` 사용 가능 O - 숫자로 시작 불가 - 대소문자 구분 --- ## 1-3. 자료형 > 데이터의 종류와 종류마다의 데이터 처리 방법 정의 ### 1-3-1. 정수 (int) - 양수, 음수, 0 ```java int num = 12; System.out.println(num); // 12 ``` ### 1-3-2. 실수 (double) - 과학적 표기법 사용하여 매우 큰 수나 매우 작은 수 표현 가능 O - 메모리 크기에 따라 표현 가능한 정밀도와 범위가 다름 ```java double e = 1.5e2; double f = 2.5e-3; System.out.println(e); // 출력: 150.0 System.out.println(f); // 출력: 0.0025 ``` ### 1-3-3. 불리언 (boolean) - `true`와 `false` 두 가지 값만 가짐 - 주로 논리 연산과 조건문, 반복문에서 사용 ```java boolean isStudent = true; System.out.println(isStudent); // true ``` ### 1-3-4. 문자 (char) - 단일 문자 저장 - 작은따옴표('')로 감싸서 표현 - `특수기호`도 저장 가능 ```java char a = 'A'; char b = '!'; char c = '0'; System.out.println(a); // 출력: A System.out.println(b); // 출력: ! System.out.println(c); // 출력: 0 ``` ### 1-3-5. 문자열 (String) ```java String fruit = "banana"; System.out.println(fruit); // banana ``` --- ## 1-4. 변수 중복 선언 - 같은 `블록({})` 안에서 동일한 이름을 가진 변수를 두 번 이상 선언 불가 - 이미 선언된 변수에 새로운 값을 재할당할 때는 앞에 데이터 타입을 붙이지 않고, 변수 이름만 사용해야 함. ```java public class Main { public static void main(String[] args) { // 1. 변수 a를 선언하고 'C'를 대입 char a = 'C'; // 2. 이미 존재하는 변수 a에 'T'를 다시 대입 (char 생략) a = 'T'; System.out.println(a); } } ``` --- ## 1-5. 형 변환 ### 1-5-1. `int <-> double` - `소수점 이하` 값을 반올림되지 않고 단순 `버림`됨 (1) double -> int - 소수점 이하 버림 ```java System.out.println((int) 3.14); // 출력: 3 System.out.println((int) -2.99); // 출력: -2 System.out.println((int) 0.0); // 출력: 0 System.out.println((int) 7.999); // 출력: 7 ``` (2) int -> double ```java System.out.println((double) 5); // 출력: 5.0 System.out.println((double) -1); // 출력: -1.0 System.out.println((double) 0); // 출력: 0.0 System.out.println((double) 42); // 출력: 42.0 ``` [[코드트리 추천 링크]](https://www.codetree.ai/accounts/sign-up-only?referralCode=th2gr22n) https://www.codetree.ai/ko/trail-info?referralCode=th2gr22n
그린
AICE Associate 자격증을 따기 위해 무료/유료 특강을 들은 후, 수업 회고와 개인 학습을 위해 정리를 하려 한다. 강사님과 같은 환경에서 실습을 하기 위해 주피터랩 사용을 택했고, 제공받은 가이드 참고 + 구글링 + AI 활용으로 얻은 환경 설정부터 시작하겠다. ## 0. 아나콘다 설치 1) 아나콘다 홈페이지 접속 2) `Get Started` 클릭 후, 로그인 3) Windows/Mac/Linux 개인 PC 운영체제에 맞는 파일 선택 후 설치 ## 1. 가상환경 생성 및 기본 패키지 생성 - 터미널에서 아래 명령어 입력 후 실행한다. 단, 복사 과정에서 하이픈 문자가 긴 대시(–m) 특수문자로 꼬여 파이썬이 파일 경로로 오해하는 에러가 발생할 수 있으므로, 반드시 정상적인 하이픈(-m) 기호로 명령어를 실행해야 한다. - 우선, 작업할 폴더를 만들어 경로를 이동한 후에 수행하자. ```python # aice 라는 이름의 실습 환경 생성 conda create -n aice python=3.10 -y # 생성한 aice 환경 활성화 conda activate aice # 기본 데이터 분석 패키지 설치 (버전 매칭) pip install numpy==1.23.5 pandas==1.5.3 seaborn==0.12.1 matplotlib==3.7.1 # 머신러닝 최신 XGBoost 및 Jupyter 환경 설치 pip install xgboost scikit-learn==1.3.2 jupyter notebook jupyterlab ipykernel # Jupyter에 가상환경 커널 등록 python -m ipykernel install --user --name aice --display-name "Python (aice)" ``` ### 1-1. Jupyter 커널 무한 재시작 에러 (의존성 지옥) - 특정 구버전 TensorFlow 설치 이후, 주피터 노트북을 실행하면 데이터프레임 표가 나오지 않고 백그라운드 엔진(Kernel)이 계속 죽었다가 무한 재시작 되는 문제가 발생했다. - 문제를 일으키는 구버전 컴포넌트를 완전히 삭제하고, 주피터가 원하는 최신 규격을 먼저 맞춘 뒤, 충돌이 없는 최신 텐서플로우 버전으로 올려서 해결했다. ```python # 1. 문제를 일으키는 구버전 텐서플로우 관련 패키지 완전 삭제 pip uninstall tensorflow tensorflow-macos tensorflow-estimator keras -y # 2. 주피터 규격에 맞는 typing-extensions 강제 리셋 및 복구 pip install --upgrade "typing-extensions>=4.13.0" ipykernel jupyter_client ipython --force-reinstall # 3. 최신 Jupyter 환경과 충돌 없는 TensorFlow 버전 설치 pip install tensorflow==2.16.1 ``` ## 2. 주피터 노트북 시작/종료 명령어 ```python # 시작 # 가상환경 활성화 conda activate aice # 주피터 랩 실행 jupyter lab # 종료 # 가상환경 비활성화 conda deactivate ``` ## 3. 주피터 랩 세팅 ### 3-1. 테마 1) 구형 테마 패키지 실패 - 실행 명령어: `pip install jupyterthemes`, `jt -l` - 실패 원인: `jupyterthemes` 패키지는 예전 구형 **Jupyter Notebook (버전 6 이하)** 전용으로 설계된 패키지임. 우리가 사용하는 최신 **JupyterLab 4** 환경과는 내부 아키텍처가 완전히 달라 명령어를 입력해도 테마가 전혀 반영되지 않음. 2) JupyterLab 4 전용 테마 패키지 성공 - 외부 패키지 설치 시 하이픈/언더바 표기법 및 최신 주피터 랩 4 확장 프로그램 규격을 지원하는 검증된 다크 테마로 우회 설치 성공. 아래 명령어 실행 후, 주피터 랩 상단 메뉴 Settings ➔ Theme ➔ JupyterLab Night 선택하여 세련된 다크 모드로 설정했다. ```python # GitHub 스타일의 다크 테마 설치 pip install jupyterlab-night ``` ### 3-2. 코드 컴플리션 - Settings - Code Completion 에서 사진처럼 설정: 빈 줄 엔터 팝업 방지 (타이핑할 때만 자동완성 팝업 띄우기) ## 4. 참고 ## 4-1. 주피터 서버 종료 - 오류 발생 or 종료 시, 주피터 서버가 실행 중인 터미널에서 `Ctrl + C` 2번 누르기 ## 4-2. 가상환경 비활성화 (아나콘다 환경 종료) - 주피터 랩 종료 시, 터미널에 `(base) base/{내컴퓨터}/~/..` 이런 식으로 프롬프트가 나타나는데 파이썬/머신러닝 분석이 아닌 평소 터미널 환경에서는 이 프롬프트를 사용하면 로컬에 작업했던 것들과 아나콘다의 버전 충돌 및 명령어 오작동이 발생할 수 있으므로 주피터랩(아나콘다) 작업이 끝나면 아래 명령어로 가상환경을 완전히 꺼주는 것이 좋다. ```python conda deactivate ``` 또한, 터미널을 켤 때마다 자동으로 (base)가 켜지는 현상이 발생한다면 아나콘다가 터미널 주도권을 가져간 상태이므로 원래대로 돌려놓는 것이 좋다. 그 기능을 주기적으로 차단하는 명령어는 아래와 같다. ```python conda config --set auto_activate_base false ``` ## 4-2. 자주 사용하는 단축키 - `Cmd + Enter` : 현재 셀만 실행 후 이동 X - `Shift + Enter`: 현재 셀 실행 후 다음 셀로 이동 - `alt + Enter` : 현재 셀 바로 다음에 빈 셀 추가 및 이동 - `Ctrl + Shift + -`: 마우스 커서 기준으로 **셀 위아래로 쪼개기** ## 4-3. 에러 해결 (1) 시뮬레이션 코드 실행 시, keras 라이브러리와 충돌 발생 - 아래 코드 추가 ```python compile=False ```
비밀글입니다.
그린
> 참고: [코드잇 - 프로그래밍 시작하기 in Python](https://www.codeit.kr/topics/getting-started-with-python){:target="_blank"} # 1. `함수` > 명령을 저장하는 역할 - 내장 함수: 프로그래밍 언어에서 미리 구현해 놓아 기본으로 제공되는 함수 ```python (1) 함수 정의 (헤더 + 바디) def 함수명(): # 함수의 ‘헤더’ (파라미터가 들어감) print(“출력할 내용”) # 함수의 ‘바디’ 함수명() # 함수 호출 (인자가 들어감) 함수명() ``` ## 1-1. `파라미터` > 함수에 넘겨주는 값으로, 함수를 정의할 때 쓰는 '매개변수' (1) 파라미터가 1개 ```python def hello(name): print(“Hello!”) print(name) print(“Welcoem to Codeit!”) hello(“Michael”) ``` (2) 파라미터가 여러개 ```python def print_sum(a, b, c): print(a + b + c) print_sum(7, 3, 2) ``` ## 1-3. `return` > 어떤 정보를 주면 계산된 정보를 돌려주는 것
그린
> 참고: [codetree Trail 0](https://www.codetree.ai/ko/trail-info/codetree-101){:target="_blank"}의 Chapter 1 - Lesson 1 # 1. 출력 ## 1-1. 코드 실행 - `main()` 함수를 시작점으로 실행 - 안쪽 중괄호 블럭에 코드 작성 ```java public class Main { public static void main(String[] args) { // 이 중괄호 안에 코드를 작성합니다. } } ``` --- ## 1-2. 출력 함수 > `System.out.println()` - 데이터를 콘솔에 출력하는 함수 - 프로그램이 올바르게 작동하는지 확인 or 계산 결과 확인 or 사용자에게 메시지 보여줄 때 사용 - 출력 후, 자동으로 `줄 바꿈(개행)` 수행하므로, 그 이후는 다음 줄부터 다시 시작 ```java System.out.println(출력할_내용); ``` --- ## 1-3. 문자열·수 출력 ### 1-3-1. 문자열 출력 - 반드시 `큰따옴표` 사용 - `//` 기호 뒤 작성된 내용은 `주석` (프로그램 실행에 영향 X) ```java System.out.println("Hello, World!"); ``` ### 1-3-2. 수 출력 - 인용부호를 제외한 수 자체를 입력 ```java System.out.println(100); // 정수 출력 System.out.println(3.14); // 실수 출력 ``` [[코드트리 추천 링크]](https://www.codetree.ai/accounts/sign-up-only?referralCode=th2gr22n) https://www.codetree.ai/ko/trail-info?referralCode=th2gr22n
그린
vscode를 실행 후 cmd + shfit + p를 누르고 'shell' 을 입력하면 아래와 같이 Shell Command: Install 'code' command in PATH 가 뜰 것이다. 이걸 클릭 또는 엔터하면 끝! 다음부턴 터미널에서 아래 명령어를 입력하여 vscode를 실행해 보자. ```bash code . ```