호록이
로그인 후 게시글을 볼 수 있습니다.
비밀글입니다.
그린
> 참고1: 유튜브 [나도코딩 - Mac 에서 C 언어 개발 환경설정](https://www.youtube.com/watch?v=ix7K3xMudgc){:target="_blank"} > 참고2: 책 [혼자 공부하는 C언어](https://hongong.hanbit.co.kr/c%EC%96%B8%EC%96%B4/){:target="_blank"} Chapter1 --- # 1. mac 환경에서 C언어 개발 세팅하기 ## 1-1. vscode 설치 홈페이지에서 직접 다운로드 대신, 원활하고 효율적인 의존성 관리를 위해 터미널에서 brew를 통해 명령어로 설치 ```bash brew install --cask visual-studio-code ``` ## 1-3. vscode 익스텐션 설치 (1) c/c++ (2) code runner ## 1-4. vscode 설정 (1) 단축키 `Cmd + ,`를 눌러 settings로 들어가기 (2) `run in terminal` 입력 후, `Code-runner: Run In Terminal` 체크 ## 1-5. 코드 실행 - 실행 버튼: - 실행 단축키 `Ctrl + opt + N` ```c // main.c 실행 #include <stdio.h> // #include <stdlib.h> // system() 함수 안 쓰므로 지움 int main(void) { printf("Be happy!\n"); // printf 출력은 줄바꿈 없이 끝나서 zsh에서 자동으로 % 기호를 붙여줌 (linux or bash에서는 그냥 다음 프롬프트가 붙어서 나옴) // system("pause"); // Windows 전용 함수: 터미널에 명령어를 대신 입력 (pause: 콘솔 창 바로 닫히는 것 방지) return 0; } ``` ```c // 출력 Be happy! ```
그린
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 ```
그린
## 문제 상황 - 프로젝트 배포 성공 후, 페이지 전환 시 느껴지는 답답함 - 로그인 버튼 하나 누르는데 1~2초가 소요 - 내 코드가 무거운가? DB 쿼리가 잘못됐나? vercel 또는 supabase 문제인가? ## 원인 파악 1. 가설 설정: 프론트/백엔드/DB 중 어느 곳에서 문제인가? 2. 실험: '/api/test-db' 라는 심플 코드 api를 만들어 로컬 및 배포 환경에서 속도 측정 3. 로컬 결과: 66.10 ms (빠름) 4. 배포 결과: 27.07 ms (매우 빠름) 5. 결론: 코드나 supabase와 같은 플랫폼 문제는 아니고 latency 문제임을 직감 ## 해결 - Vecel의 기본 서버 위치가 미국(iad1)로 설정되어 있었음 - 사용자(한국)의 요청 -> 미국 Vercel 서버 -> 아시아 supabase db로 이동 -> 미국 -> 한국 - Vercel Settings - Functions - Region: Seoul (icn1)로 변경 - Redeploy 진행 ## result - 배포 환경의 물리적 위치가 ux에 큰 영향을 주는지 체감 - 클라우드 환경이어도 서버 위치는 중요
그린
> 참고1: [codetree Trail 0](https://www.codetree.ai/ko/trail-info/codetree-101){:target="_blank"}의 Chapter 2 - Lesson 1, 4 > 참고2: [codetree Trail 1](https://www.codetree.ai/ko/trail-info/novice-low){:target="_blank"}의 Chapter 1 - Lesson 1 # 1. 출력 ## 1-1. 문자열 출력 ### 1-1-1. 큰 따옴표`"` ```python print("Hello World") ``` ### 1-1-2. 작은 따옴표 `'` ```python print('Hello World') ``` ### 1-1-3. 큰 따옴표 3개 연속`"""` ```python # 예시 1 print("""Hello World""") ``` ```python # 예시 2 print(""" Hello World """) ``` ### 1-1-4. 작은 따옴표 3개 연속 `'''` ```python # 예시 1 print('''Hello World''') ``` ```python # 예시 2 print(''' Hello World ''') ``` --- ## 1-2. 특수 문자 포함시키기 ### 1-2-1. 문자 앞에 `\` 붙이기 ```python # 예시 1 print('Let\'s do it') ``` ### 1-2-2. `"""` or `'''`로 감싸기 ```python print('''Let's do it''') ``` --- ## 1-3. 줄바꿈 - 파이썬에서 print() 함수는 기본으로 줄바꿈이 됨 - 위->아래 순차적 실행 - `end="\n"`가 기본으로 들어감 ```python print("Hello World") print("Python is Fun") ``` ### 1-3-1. `\n`) ```python print("Hello World\nPython is Fun") # 위 두 줄과 같은 출력 (new line 특수문자 활용) ``` ### 1-3-2. `"""` or `'''` - 여러 줄에 해당하는 문자열을 한번에 담기 (위아래 여백 없이 작성) ```python # 올바른 예시 1 print("""Hello World # 위 두 줄과 같은 출력 Python is Fun""") # 잘못된 예시 1 print(""" Hello World Python is Fun """) ``` --- ## 1-4. `공백`으로 구분하여 출력 ### 1-4-1. 쉼표 `,` - print() 함수에서 여러 개의 인수를 공백으로 구분하려 출력할 때 사용 ```python print("a", "b", "c") # a b c ``` ### 1-4-2. `sep=` 파라미터 > 여러 인수들 사이에 삽입될 문자열(구분자)을 지정하는 옵션 - python 기본값은 공백(' ') ```python print("a", "b", sep="") # ab print("a", "b", sep=" ") # a b print("a", "b", sep=", ") # a, b ``` ### 1-4-3. `end=` 파라미터 > print() 함수의 출력이 끝난 후, 추가할 문자열을 지정하는 옵션 - python 기본값은 줄 바꿈(개행) 문자('\n\)로, 출력 후 자동으로 줄 바꿈이 수행됨 (print() 함수는 기본적으로 출력 후 줄 바꿈 수행하여 다음 출력이 새 줄에 나타남) ```python # 예시1 print("Hello", end="") print("World") # HelloWorld # 예시2 print("Hello", end=" ") print("World") # Hello World ``` ### 1-4-4. sep과 end를 함께 사용 ```python print("사과", "바나나", "체리", sep=", ", end=" ") print("이어지는 내용입니다.") # 사과, 바나나, 체리 이어지는 내용입니다. ``` --- ## 1-5. 출력 형식 ### 1-5-1. f-strings (f-문자열) ```python # 예시1 name = "호록이" age = 2 print(f"이름: {name}, 나이: {age}") # 이름: 호록이, 나이: 2 # 예시2 print(f"1 + 1 = {1 + 1}") # 1 + 1 = 2 ``` - print() 함수에서 중괄호('{}') 안에 변수나 표현식을 넣어 출력 가능 - 문자열 앞에 `f` 접두사를 붙여 사용 - 기존의 문자열 포맷팅 방식보다 더 간결·직관적 - 소수점 형식 `{변수:포맷} `지정하여 원하는 자릿수 출력 (n 지정 시, 솟수점 n + 1번째 자리에서 반올림 후, 소수점 n번째 자리까지 출력) ```python # 예시 1 pi = 3.141592653589793 print(f"파이: {pi:.4f}") # 파이: 3.1416 (소수점 이하 2자리까지 반올림하여 출력) # 예시2 weight = 13 ratio = 0.165 print(f"{weight} * {ratio:.06f") = {weight * ratio:.06f}") # 13 * 0.165000 = 2.145000 (자릿수의 공백을 0으로 채움) ``` ## 1-6. 특수 문자 & 이스케이프 시퀀스 ### 1-6-1. `\n` (줄 바꿈) ```python print("첫 번째 줄\n두 번째 줄") # 첫 번째 줄 # 두 번째 줄 ``` ### 1-6-2. `\t` (탭) ```python print("이름\t나이\t키") print("호록이\t2\t120.5") # 이름 나이 키 # 호록이 2 120.5 ``` [[코드트리 추천 링크]](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 . ```
그린
> [모구모구 수리연구소 - 여름방학 응용수리 무료특강 (7월 9일 ~)](https://www.mogumath.co.kr/goods/lecture_info/27) # 모구모구 응용수리 특강을 듣게 된 계기 요즘 NCS를 준비하면서 가장 부담스럽게 느껴졌던 영역이 응용수리였다. 문제를 읽고 어떤 공식을 적용해야 할지 고민하는 데 시간이 오래 걸렸고, 풀이 방향을 잡아도 계산 과정에서 자주 막혔다. 특히 실제 시험에서는 한 문제에 많은 시간을 사용할 수 없기 때문에 응용수리를 어떻게 공부해야 할지 고민이 많았다. 그러던 중 NCS 응용수리는 모구모구 강의를 들으면 좋다는 말을 풍문으로 들었고, 마침 오구오구 강의를 듣고 있던 중, 바로 다음 단계인 보구보구의 풀이 방식을 실전으로 체험할 수 있는 기출문제 특강이 열린다는 소식을 듣고 신청하게 됐다. 보구보구는 수강 기한이 있어 오구오구를 모두 들은 뒤 결제하려고 했는데, 이번 특강을 통해 미리 수업 방식을 경험해 볼 수 있다는 점도 좋았다. 특강은 7월 9일부터 매주 목요일 오후 7시 30분부터 9시 30분까지 총 8회차로 진행된다. 공식적인 수업 시간은 두 시간이지만, 실제로는 내용을 충분히 설명해 주셔서 예정된 시간보다 조금 더 길게 진행되기도 했다. 또한 총 8회차 강의 수강 인증을 인스타그램에 올리면 추후 모구모구 수리연구소 사이트에서 현금처럼 사용할 수 있는 포인트를 인증 횟수에 따라 차등적으로 지급하는 챌린지도 함께 진행된다. 하지만 나는 인스타그램을 하지 않아서 포인트는 포기하고 ‘그냥 강의나 열심히 듣자’는 마음으로 첫 주 강의를 들었고, 2회차 특강에서 많은 문의가 들어왔는지 인스타그램뿐만 아니라 블로그 인증도 가능해졌다는 모구쌤의 말씀을 듣고 이렇게 후기를 작성하게 됐다. 그전에 한 가지 확인할 부분이 있었다. 무분별한 가계정 참여를 방지하기 위해 인증에 사용하는 인스타그램과 블로그 계정에 일정한 제한이 있었기 때문이다. 내 블로그는 다른 사람들과 활발하게 소통하기보다는 나만 사용하는 개인 기록용에 가까워서, 이런 블로그에 후기를 올려도 혜택을 받을 수 있는지 확신이 서지 않아서 모구쌤에게 직접 문의를 드렸다. 2회차 특강이 끝난 직후라 아주 늦은 시간이었는데도 빠르고 친절하게 답변해 주셨다. 인증만 제대로 부탁드린다며 개인 블로그에 작성해도 괜찮다고 해주셔서 안심할 수 있었다 ㅎㅎ 그럼 이제 지난주에 진행된 1회차 강의와 바로 어제 들은 2회차 특강에 대한 이야기를 해보겠다! --- ## 여러 공기업의 실제 기출문제를 다룬다 강의에서는 문화재단, 국민연금공단, 건강보험심사평가원, 보건산업진흥원, 중소벤처기업진흥공단, 코레일, 한국철도공사 등 여러 기관의 기출문제를 활용했다. 한 기관의 문제만 집중적으로 푸는 것이 아니라 여러 공기업의 문제를 함께 살펴볼 수 있어서 좋았다. 기관은 서로 달라도 응용수리 문제가 완전히 다르게 출제되는 것은 아니며, 자주 반복되는 대표 유형이 있다는 점을 확인할 수 있었다. 일반적인 연습문제보다 실제 기출문제를 통해 풀이 방법을 익히니 강의 내용이 더 현실적으로 다가왔다. 이런 문제가 실제 시험에 나오는구나 하며 문득문득 정신이 번쩍 드는 기분도 들었다. 또한, 문제를 모두 정석대로 풀기보다는 구조를 먼저 파악하고, 계산을 최대한 줄이는 방향으로 풀이가 진행됐다. 다음은 1회차와 2회차 강의에서 다룬 내용 중 특히 기억에 남았던 문제 유형과 풀이 방법을 복기해 보려고 한다. --- ### 1. 인수분해 인수분해는 중학교 과정에서 배우는 비교적 단순한 공식이다. 하지만 수학에 손을 놓은 지 꽤 오래돼서 처음에는 잠시 머뭇거리기도 했다. 그래도 분배법칙과 연결해서 다시 설명을 들으니 생각보다 금방 이해할 수 있었다. 머리로는 잊고 있었지만 손은 기억하고 있었던 것 같다. NCS에서 인수분해를 활용하는 문제는 계산하기 어려운 큰 수가 길게 나열되는 경우가 많았다. 처음 문제를 보면 큰 수를 모두 직접 계산해야 할 것처럼 느껴지지만, 공통된 부분을 묶거나 완전제곱식의 형태를 찾으면 계산 과정이 크게 줄어들었다. 예전 같았으면 숫자를 보자마자 곱셈부터 시작했겠지만, 강의를 듣고 나서는 먼저 식의 구조를 살펴봐야겠다는 생각이 들었다. 결국 계산형 문제에서도 중요한 것은 계산 속도 자체보다, 계산하지 않아도 되는 부분을 찾아내는 능력인 것 같았다. ### 2. 몰아넣기 조를 구성하거나 조건에 맞는 인원수를 구하는 문제는 경우를 하나씩 나누기 시작하면 계산이 복잡해지기 쉽다. 이번 강의에서는 이런 문제를 ‘몰아넣기’ 방식으로 정리하는 방법을 배웠다. 예를 들어 6명, 7명, 8명으로 구성된 조를 일정 개수 만들어야 하는 문제라면, 각각의 경우를 처음부터 따로 계산하지 않는다. 우선 모든 조를 특정 인원수로 구성했다고 가정한 뒤, 주어진 조건에 맞게 인원을 이동시키며 차이를 조정하는 방식으로 접근했다. 이 방법을 사용하니 복잡한 표나 긴 방정식을 만들지 않고도 필요한 조의 개수를 빠르게 찾을 수 있었다. 서로 다른 조건을 하나씩 처리하는 것이 아니라, 우선 하나의 기준으로 통일한 뒤 차이만 조정한다는 사고방식이 신선했다. 앞으로 비슷한 문제가 나오면 경우의 수를 무작정 나누기보다 먼저 한쪽으로 몰아넣을 수 있는지를 살펴봐야겠다. ### 3. 원화·달러·유로 단위 문제 환율 문제는 계산 자체보다 단위를 잘못 적용해서 틀리는 경우가 많다. 원화, 달러, 유로가 한 문제에 함께 나오면 무엇을 곱하고 무엇으로 나눠야 하는지 순간적으로 헷갈리기 일쑤다. 강의에서는 공식을 외우는 대신 단위를 하나씩 지우며 계산하는 방식으로 설명했다. 예를 들어 유로를 원화로 바꾼 뒤 다시 달러로 환전하는 문제라면, 각 환율을 순서대로 적용하면서 계산 과정에서 어떤 단위가 없어지고 최종적으로 어떤 단위가 남는지를 확인했다. 최종적으로 구하려는 것이 달러라면 계산식에도 달러 단위만 남아야 한다. 이렇게 생각하니 단순히 숫자만 보고 곱하거나 나누는 것보다 훨씬 덜 헷갈렸다. ### 4. 리그전과 조합 리그전 문제도 NCS 응용수리에서 자주 등장하지만, 리그전과 토너먼트가 한 문제에 함께 나오면 순간적으로 헷갈리곤 했다. 강의에서는 리그전의 경우 각 팀이 다른 팀과 한 번씩 경기한다는 구조를 조합으로 계산했다. 반면 토너먼트는 한 경기마다 한 팀이 탈락하므로 전체 경기 수가 ‘팀 수-1’이 된다는 원리로 접근했다. 공식을 무작정 암기하기보다 왜 그런 결과가 나오는지 그림으로 확인할 수 있어 기억에 더 잘 남았다. 리그전과 토너먼트가 함께 출제되더라도 각각의 경기 수를 구한 뒤 합하면 된다는 흐름도 명확해졌다. 조합 역시 팩토리얼을 길게 전개하기보다, 계산에 필요한 부분만 남기고 약분하는 방식으로 접근해 시간을 줄였다. 문제를 보자마자 공식을 적기보다는 순서를 고려하는 문제인지부터 판단하는 습관이 필요할 것 같다. ### 5. 일률과 거리비 일률 문제는 사람마다 일하는 속도가 다르고 작업 기간까지 함께 주어져 개인적으로 어려워했던 유형이다. 이번 강의에서는 같은 일을 기준으로 볼 때 일률과 시간은 서로 반비례한다는 관계를 중심으로 설명했다. 일률이 높은 사람은 같은 일을 더 짧은 시간에 끝내고, 일률이 낮은 사람은 더 오랜 시간이 걸린다. 따라서 일률의 비가 주어졌다면 시간의 비는 그 역수 관계가 된다. 이 관계를 먼저 잡고 나니 사람별 작업 시간을 모두 미지수로 놓고 복잡한 방정식을 세울 필요가 없었다. 거리비 문제도 마찬가지였다. 무작정 비례식을 세우는 것이 아니라 문제에서 무엇이 동일한 조건인지를 먼저 찾아야 했다. 시간이 같으면 거리는 속력에 비례하고, 거리가 같으면 시간은 속력에 반비례한다. 결국 일률이나 거리비 문제에서는 숫자를 바로 계산하기보다, 먼저 무엇이 같고 무엇이 비례하거나 반비례하는지를 표시하는 것이 중요했다. ### 6. 가중평균 가중평균은 ‘평균’이라는 표현 때문에 두 값을 더해 2로 나누는 단순 평균과 혼동하기 쉬운 유형이다. 하지만 각 항목의 비중이 다르다면 결과에 미치는 영향도 달라진다. 강의에서는 서로 다른 판매량이나 증감률이 주어진 문제를 통해, 기준값을 설정하고 각 항목의 비중에 따라 변화량을 반영하는 방법을 설명했다. 특히 큰 수와 작은 수가 함께 있는 문제에서는 두 값의 중간만 구한다고 답이 나오지 않았다. 전체에서 차지하는 비중이 큰 항목이 최종 결과에 더 많은 영향을 주기 때문이다. 공식만 외우기보다 어떤 항목이 전체 결과를 더 크게 움직이는지 생각하니 가중평균의 의미가 훨씬 쉽게 이해됐다. --- ## 응용수리의 부담을 줄일 수 있다는 기대가 드는 강의 응용수리는 같은 문제를 풀더라도 정석적인 방법으로 매번 긴 식을 세우면 실전에서 시간 부족을 해결하기 어렵다. 우선 문제를 풀기 전에 유형을 빠르게 구분할 수 있어야 할 것 같다. 이번 강의에서 다뤘던 일률, 거리비, 몰아넣기, 가중평균, 리그전과 조합, 비율, 단위 문제처럼 어떤 구조의 문제인지 먼저 파악하고, 그에 맞는 접근법을 선택해야 한다. 앞으로는 강의에서 배운 빠른 풀이와 내가 기존에 사용하던 풀이를 비교해 볼 생각이다. 정답을 맞힌 문제라도 풀이 시간이 오래 걸렸다면 다시 풀어보고, 불필요한 계산이나 더 간단하게 정리할 수 있는 부분이 있었는지 확인하려고 한다. 오답노트에도 전체 풀이를 그대로 옮겨 적기보다는 핵심적인 접근법을 짧게 남기는 것이 좋을 것 같다. 사실 강의를 듣기 전에는 응용수리를 잘하려면 계산이 빠르거나 타고난 수학적 감각이 있어야 한다고 생각했다. 그런데 모구쌤도 처음에는 수학의 바닥(?)에서 시작했고, 한 문제를 푸는 데 몇 시간이 걸리거나 힘들게 느껴지는 것이 당연하다고 말씀해 주셨다. 또한, 공식을 냅다 암기하지만 말고 수학 문제 유형은 범위가 그렇게 넓지 않으니 여러 번 풀어 내 것으로 만드는 게 중요하다는 생각을 심어주셨다. 아직 2주차 강의까지밖에 듣지 않았지만, 내가 생각했던 것보다 훨씬 빠르고 쉽게 응용수리 문제를 풀 수 있다는 점이 신선하게 다가왔다. 얼른 보구보구도 결제해서 배운 풀이법을 제대로 익히고, 응용수리 공부를 자신 있게 이어가고 싶다는 두근두근한 마음이 든다 ㅎㅎ 응용수리에서 항상 시간이 부족하거나, 문제마다 긴 방정식을 세우느라 어려움을 느끼는 사람이라면 들어볼 만한 강의라고 생각된다. 나도 이번에 배운 풀이법을 기출문제에 반복해서 적용하면서, 응용수리를 피해야 하는 영역이 아니라 점수를 확보할 수 있는 영역으로 만들어 볼 생각이다.
그린
> [모구모구 수리연구소 - 여름방학 응용수리 무료특강 (7월 9일 ~)](https://www.mogumath.co.kr/goods/lecture_info/27) ## 1. 7주차 모구모구 응용수리 무료특강 후기 이번 7회차 특강에서는 인수분해와 이차방정식, 순열·조합, 확률, 일률, 가중평균, 거속시, 비례식과 규칙 찾기까지 다양한 유형의 기출문제를 풀었다. 이제 특강도 거의 마지막을 향해 가는 만큼 이전에 배웠던 풀이법이 다시 등장하기도 했고, 여러 개념을 한 문제에 연결해서 사용하는 문제도 많았다. 먼저 초반에는 오랜만에 인수분해와 이차방정식이 등장했다. 이전 회차에서 인수분해를 다뤘던 기억이 있어서 처음보다는 익숙하게 느껴졌다. 특히 모든 값을 직접 구하려고 하기보다 문제에서 요구하는 값이 무엇인지 보고 필요한 관계만 이용하면 계산을 많이 줄일 수 있었다. 그리고 순열과 조합 문제가 나왔는데, 사람을 일렬로 세우는데 특정 두 사람이 반드시 붙어 있어야 하는 문제, 남녀가 번갈아 서는 문제, 특정 사람이 가운데에 위치해야 하는 문제 등 조건이 붙은 경우의 수 문제가 여러 개 나왔다. 이런 문제는 조건을 글로만 읽으면 경우가 굉장히 많아 보이는데, 붙어 있는 사람을 하나의 묶음으로 생각하거나 먼저 자리를 고정한 뒤 나머지를 배열하는 방식으로 접근하니 훨씬 간단했다. 특히 순열에서는 사람과 자리의 위치를 직접 그려보면서 경우를 나누는 것이 생각보다 도움이 많이 됐다. 무작정 팩토리얼부터 적는 것보다 ‘누구의 자리를 먼저 정해야 하는가’를 찾는 것이 중요하다는 생각이 들었다. 확률 문제에서는 전체 경우의 수와 원하는 경우의 수를 각각 구해 비교하는 기본적인 방법을 다시 복습했다. 확률 자체의 공식은 어렵지 않지만 결국 앞에서 배운 순열과 조합을 제대로 구할 수 있어야 확률도 빠르게 계산할 수 있다는 점에서 서로 연결되어 있다는 느낌이 들었다. 7회차까지 듣고 나니 문제의 생김새는 정말 다양하지만 결국 사용되는 풀이법은 계속 반복된다는 것이 더 확실하게 느껴졌다. 처음에는 순열, 조합, 확률, 일률, 가중평균, 거속시를 전부 별개의 유형으로 생각했는데, 이제는 문제에서 무엇을 먼저 고정하고 어떤 관계를 단순화할지를 찾는 과정이 공통적으로 중요하다는 생각이 든다. 이제 정말 마지막 회차만 남았다. 처음 특강을 시작했을 때보다 응용수리 문제를 보는 부담감도 많이 줄었고, 익숙하게 보이는 유형도 늘어난 만큼 마지막까지 잘 듣고 지금까지 배운 풀이법을 한 번 제대로 정리해 봐야겠다.
그린
> [모구모구 수리연구소 - 여름방학 응용수리 무료특강 (7월 9일 ~ 8월 27일)](https://www.mogumath.co.kr/goods/lecture_info/27) ## 마지막 모구모구 응용수리 특강을 마치며 드디어 8주 동안 진행된 응용수리 무료특강의 마지막 8회차까지 모두 들었다! 이번 회차에서는 부등식, 경우의 수, 일률, 비율, 가중평균, 이차함수, 확률 등 지금까지 특강에서 배웠던 여러 유형을 다시 기출문제를 통해 풀어봤다. 마지막 회차답게 특정 유형 하나를 집중적으로 배우기보다는 그동안 익혔던 여러 풀이법을 다시 꺼내 활용해 볼 수 있었다. 처음 특강을 듣기 시작했을 때만 해도 ncs 수리 문제를 보면 어떻게 시험장에서 빠르게 푸는 건가하는 의문이 들고 풀기 전부터 지레 겁부터 먹었는데 특강을 따라오면서 내가 직접 생각하고 풀이할 수 있는 문제가 조금씩 늘어나는 게 느껴져서 많은 보람이 있었다ㅎ 예전 같았으면 바로 긴 방정식을 세우거나 아예 풀이 방향을 잡지 못했을 텐데 이건 가중평균으로 풀어볼까? 거리비 이용할 수 있겠다. 이런 생각이 떠오르기 시작했다! 물론 아직 문제를 보자마자 모든 풀이가 바로 떠오르는 수준은 아니지만, 특강을 듣기 전과 비교해 보면 문제를 바라보는 시각 자체가 달라진 것 같다. 무료특강이지만 유료 못지않게 양질의 강의였고 듣길 잘했다는 생각과 이제 더 제대로 공부해 봐야겠다라는 자신감이 든다. 이제부터 시작이라는 생각이랄까? 앞으로는 보구보구 강의부터 차근차근 다시 공부하면서 기본적인 유형과 빠른 풀이법을 확실하게 내 것으로 만들 생각이다. 처음부터 어려운 문제에 욕심내기보다는 배운 유형을 정확하게 풀 수 있도록 만들고, 익숙해지면 조금씩 문제의 난이도를 높여가려고 한다. 문제 수도 처음부터 무작정 많이 풀기보다는 풀이법을 제대로 이해하는 데 집중하고, 익숙해질수록 하루에 푸는 문제 수도 점점 늘려갈 생각이다. 처음에는 가장 부담스러웠던 응용수리였지만, 점점 풀 수 있는 문제가 늘어나는 재미를 느낀 만큼 앞으로도 꾸준히 이어가 봐야겠다. 8주 동안 고생했지만 끝까지 듣길 잘했다! ㅎㅎ