🤔회고
알고리즘 정답 풀이를 보는 것에 대해
일정 시간 제한을 두고, 이후에는 정답 풀이를 보는 방법으로 공부를 진행하고 있다. 주어진 과제의 양에 비해 시간이 짧아서라고 생각하지만 찜찜함을 놓을 수 없었다. 하지만 동료가 말해준 혜안 덕분에 마음이 편해졌다. "수학의 정석에서 예제가 주어지고 그에 대해 상세한 풀이 방법을 익히잖아. 선별해주신 알고리즘 과제도 마찬가지라고 생각해" 그 뒤로 편히 답을 보고 있고, 8.23 금요일 DP 과제부터는 짧게 아이디어만 떠올리고 바로 답을 보고 있다. 그래프 순회 방법을 겨우 익혔더니 이제는 점화식을 찾으라고 하는데 도통 모르겠기 때문이다. 이건 수학문제 아닌가? 아직은 어색하고 답답하지만 코드트리 예제와 풀이를 통해 하나씩 익혀보려한다. 이 또한 뭔가 보이겠지 뭐.
Brute Force의 중요성
현재 정글 9기에는 주요 논쟁(?)이 있다.
DP 점화식을 찾기 위해 노력하기 vs Brute Force로 먼저 접근하고 최적화하기
알고리즘 주차 3주째인데, DP는 아무리 풀어도 익숙해질 수 있는 주제인가 많은 상심이 들게했다. 나름 동전 유형, 배낭 유형 쪼개서 패턴화를 해보려했으나 아무리 풀어도 문제마다 새로운 점화식에 당황했기 때문이다. 나 또한 시간이 많다면, 완전탐색을 할 수 있다면 후자의 방식으로 해보고 싶지만 우선 DP로 사고하기도 급급해서 최대한 많은 문제를 풀어보고 점화식을 접해보는 방식을 택했다. DP 자체가 고난이도 같아서 Brute Force 기본기를 충실히 닦고 다시 넘어와야할 것 같다.
결국 입술에 물집이 잡혔다.
3주차, 하나둘 몸에 이상 신호가 오고있다. 컨디션이 안 좋은 주간인걸 감안하더라도 늦잠과 산책 스킵 횟수가 늘어나고 있다. 그래서 토요일 아침에 멀더라도 약국에서 피로회복제를 사먹고 방청소와 요가를 하고 출근했다. 잠깐의 쉼이었지만 효과가 좋았다. 일요일에 아침 산책하고도 첫타자로 출근했기 때문이다. 그리고 정글 삶에 적응을 했는지 교과서를 보며 졸기도하고 때로는 일찍 퇴근하며 (그게 21시이지만 ^^) 오늘의 과제를 미루기도 한다. 공부 마인드도 조금 바뀐 것 같다. 마음은 끝까지 이해될 때까지 파고 싶은데 그러기엔 너무 많은 과제들이 밀려있어서 훑기에 그친 것들도 있다. 한번 지치고 나니깐 지금은 팀활동도, 개인학습 이해도 다 잘해내고 싶다는 욕심을 내려놓는 연습을 하고 있다. 그래도 퇴근 후 유튜브로 하루를 마무리하거나, 시험기간만 기다렸다가 벼락치기와 작심일일을 일삼곤했던 습관에서는 벗어났으니 좋다.
그나저나 내가 이곳에서 얻고 싶은 것은 무엇이었더라? 0주차 내용을 복기해본다. (1) 인맥. 최소한의 친목만 하고 있는데 조금 더 어울려야할까하는 고민의 기로에 있다. 지금은 공부가 가장 우선순위라서 팀 내 사람들에게만 집중하고 있는데 잘하고 있는건지 살짝 고민된다. (2) 백엔드 개발자로 전직. 음, '이건 CS 지식을 잘 쌓고 있냐'라고 질문해보고 싶다. 답은 '부족하다'이다. 과제 풀기에 급급해서 팀활동은 최소화로 많은 문제 풀어보기 전략을 하고 있는데, 패스하는 개념들도 많고 논의하는 시간을 통해 개념 체화를 체크하고 싶은데 많이 버벅인다. 혹여 동료들에게 설명하는 기회가 오더라도 나만 명쾌하고, 동료들은 이해되지 않는다고 답해서 아직 체화를 못했음을 깨달았다. 다음 주차 때는 서로 설명하는 시간을 많이 가져보자! (속상해하지 말고 과거의 실수로부터 배우면 된다.) 그리고 정글에서는 강의자료가 없다보니 각자의 방식으로 지식을 습득하고 공유하고 있다. 나 같은 경우엔 블로그를 통해 요약된 정보를 많이 습득하는데 유튜브로 접하는 동료들을 보고 영상 컨텐츠의 힘을 다시 한번 느꼈다. 그리고 나도 5분 동안 떠들 수 있는 깊은 이해도와 방대한 지식을 쌓고 싶은 마음이 들었다. 기회가 된다면 유튜브 채널을 이용해 공부 기록을 남겨봐도 좋을 것 같다. 발표 연습도 되고, 지식 체화 체크를 할 수 있는 일석이조의 기회니깐!
이렇게 잡생각이 많이 드는 한 주였다보니 공간을 이곳 저곳 바꿔가며 공부를 시도했다. 그 중 가장 마음에 드는 통창 앞자리! 대전은 높은 건물이 적어 맑은 하늘에 예쁜 구름들이 장관이다. 처음에는 졸려서 잠깐 앉을 요량으로 갔었는데 문제가 안 풀릴 때면 지나가는 사람들을 구경하고 구름도 보고 너무 힐링이 되는 공간이다. 딱 책상 가져다 놓고 햇살 받으며 공부하고 싶다.
📅필수 목표
[필수 과제]
- 컴퓨터 시스템 교재; 1장
[옵션 과제]
- 4주차 대비; C언어 문법 (w. 컴퓨터 시스템 교재; 3장)
[240822 목]
✅ WEEK2 개발일지 포스팅
🔼시험 #15573 다시 풀어보기 (런타임에러 우선 패스)
✅ 코드트리 가입 (동생 계정)
🏃♀️알고리즘 DP 개념 정리 및 하 ~ 중 풀면서 구현 시 필요한 것 챙겨보기
✅ 백준 DP 쉬운 문제부터 풀어보기 [링크]
[240823 금]
✅ 약국 방문 (피로 회복제)
✅ 코드 트리 DP 강의 완강 (필수 문제만, Greedy는 토요일에 학습 예정)
✅ 엑셀 DP 과제 풀기 (동전류)
[240824 토] 15시 ~ 01시 (10H)
✅ 충분한 휴식 및 피로 회복
🔼 엑셀 DP 과제 모두 풀기 (우선 동전류 깊이 파헤치기 패스); 상 3개 남음
[240825 일] 09시 ~ 22:30 (13H 30min)
✅️ 간식 끊기
✅ 코드트리 Greedy 강의 학습, Greedy 문제 풀기 (내일 오후 팀활동 준비)
✅ 엑셀 DP, 그리디 과제 마무리 (3개 우선 pass)
✅ (추천 문제) #2839 설탕배달 => fraction knapsack 문제인지 풀어보고 슬랙 남겨두기
[240826 월] 09시 ~ 00:30 (15H 30min)
✅ 22시/ [C언어 특강 공부] ~ 3주차 진도 따라잡기
[복습 및 포스팅]
✅ (이어서) 백준 DP 실버 추가 문제 풀기 [링크]
✅ LIS, LCS 유형 톺아보기 & 블로깅
✅ 배낭류 문제 톺아보기 (배낭 1D dp로 푸는 법 찾아보기)
[240827 화] 09시 ~ 22시 (13H)
✅ 취업지원제도 전화 문의 및 신청 완료
✅ 9:30 / C언어 문법
✅ 컴퓨터시스템 1장, 2장, 3장 읽기 (이해 안되는 부분 우선 skip, C언어에서 궁금했던 포인터, 자료형 위주로 습득)
[C언어 예습] [참고 자료]
✅ C언어 핵심 문법 정리 및 실습
✅ 포인터 (+ 배열, 문자열 연관짓기)
[240827 수] 09시 ~ 22시 (11H, 저녁 2시간 병원)
✅ 그리디 유형 톺아보기
✅ 블로그 홈 UI 변경
✅ 17-19 이비인후과 방문
- DP Top-Down 유형 살펴보기 [링크]
[복습]
- 엑셀 과제 복습 및 개념 wrap-up
- 동전류 문제 톺아보기 (동전0 ~ 동전2, 바꿔주기 복습 + for문 순서 궁금한점 해결하기)
-- 동전류 : #2294 동전2, #2624 동전 바꿔주기 #9084 동전
🔥추가 정리 필요
- 컴퓨터시스템 추가 정리: 47p 매력적 / 자료형, 2.4 부동 소수점 / 오버플로우
- 신찬수 교수님의 알고리즘 강의 [링크]
- Dynamic Programming 개념잡기 5시간 짜리 [링크]
- python3 vs PyPy
3주차 마지막문제; 도전 문제인 이유
#9251 LCS (sequence, 2^N) N^2 이하로 내려가기 어려워서 보통 N이 작음
#9249 LCS (sub array, N^2, 등차수열의 합) N이 큼에도 풀수 있는 이유는?
시험 리뷰
#1679 중간에 break 해도 되는지 확인해보기
#2631, #1379 다시 풀어보기, 타 PR 확인하기
#2631 insertion sort에서 inversion이 생긴게 몇개인가? / LIS 응용 문제! (n^2, nlogn 알고리즘 둘 다 확인)
#1379 우선순위큐 문제 많이 풀어보자! 탐색 시 순서 할당에 응용되네
컴퓨터시스템 교과서 리뷰
- C <-> 어셈블리어 전환 사고가 중요함
- CPU 3요소: 캐시, ALU, 레지스터
- 173p fig 3-2.- 인텔에서는 PC 가 어떤 레지스터? x86 IP (instruction pointer)
-- 16 ~ 64bit 까지 네이밍을 지원함
-- 64bit 6ip
- PC (instruction pointer) Register의 역할은? 명령이 저장되어있는 메모리 주소를 저장하고 있음
-- 과거에는 for, jump만 하기때문에 pointer counter라고 명명함
- stack pointer: CPU는 stack 자료구조를 HW로 지원함
-- push : stack pointer 주소가 내려감 (top의 위치가 이동 후) 값을 할당
-- 왜 stack? 어떤 주소로 갔다가 다시 돌아오기 위함. 주소를 스택에 넣어
-- call : 갔다 돌아와 / jump : 이동해
python과 달리 메모리 할당에 대해 고민할 수 있는 C언어, 어셈블리어 학습 권장
알고리즘 관련 코멘트
- 메모이제이션 함수 주의점: 같은 argument => 같은 결과
- 알고리즘 > 문제당 여러 풀이법이 있다. 정답이라고 하나만 외우지 말기
📝메모
[Visual Studio 2022]
- 글꼴 설정 : Consolas
- 에러 표시 안된다면? 프로젝트 제거하고 재시작
- 솔루션 탐색기 사라졌으면? [보기] > [솔루션 탐색기] 클릭
'💻 프로젝트 > 정글 사관학교' 카테고리의 다른 글
[WEEK5] allocator 재밌다! (1) | 2024.09.13 |
---|---|
[정글 SW사관학교] WEEK4. 뒷심 부족 (6) | 2024.09.06 |
[정글 SW사관학교] WEEK2. 풀이 고민 소요 시간에 대한 이분탐색 (0) | 2024.08.22 |
[정글 SW사관학교] WEEK1. 나는야 백준 골드 유망주 (0) | 2024.08.16 |
[정글 SW사관학교] WEEK0. 미니 프로젝트 최종 발표 QnA 모음집 (0) | 2024.08.14 |