블로그

빠타박스

[(Daily 빠타박스)인프런 워밍업 클럽 2기] - CS 전공지식을 시작하는 글_1일차

인프런 워밍업 클럽 CS얼마전 본 면접에 나는 그냥 딱히 신경 쓰지 않았다. 나의 실력이 이정도구나..이런 질문에 이런 것 밖에 답변을 하지 못하는구나. 너무 준비되지 못했고 기초가 부족하다 느꼈다... 그러다 우연치 않게 보게된 워밍업 클럽 처음엔 무료인줄 알았다..그러나 스터디 그룹에 초대되고 그런 과정이 무료라는 것이지 절대 세상에 무료라는 것은 없다. 그냥 40% 할인권을 주었고그것으로 구매하여 저렴하게 강의를 수강할 수 있었다. 감자라는 강의자 분은 정말 퀄리티 좋은 강의를 올리시고 계신다는 것을 일단 동영상에 노력이 어마어마 하게 들어갔음을 알 수 있었다. 감자강의자님 로드맵 CS일단 강의 자체는 좋아보였고, 리뷰도 정말 좋게 쓰여져 있다. 솔직히 믿을만 한가. 싶기도 했지만. 나는 좀 인강 스타일이 까다롭게 잘 안맞아서... 이 30대에 듣는 인강을 신중히 고르는 편이였다. 리뷰 내용도 일단 보고 고민을 많이했다. 널널한개발자 님의 강의를 볼지 이것을 할 지 그러나 그냥 해보자 싶었다.강의 커리큘럼을 비교해 보면서 들어오게 되었고,11월 1일 까지 마감이라. 딱 마침 내가 다시 학원에 가게 될 시기랑 겹치지 않아서.(갈지 안갈지 지금 쓰는 시점에서 아직 정하지는 않았다만..) 그렇게 초대된 디스코드를 통해서 OT도 진행하였고, 확실히 제대로 진행하는 스터디 클럽인 만큼 신중히 잘 하는 것 같았다.시간표도 주어지고 준비가 되어있는 듯 했다. 약 한달간의 커리큘럼과정이였으나.이것이 어쨋든 자기주도학습의 일환이다. 우리가 들어야 한다. 정보를 제공해주었으니. 그래서 시작해본다.내 스스로의 위치에서 발전할 수 있기를 어디서나 중요한건 복습이다. 복습되지 않으면 쉽지 않을 수 있다.내가 간과하는 것이 그런것이다. 반복학습을 싫어하기에. 힘들어한다.하지만 해야하만 한다... 한번 진행해보자... 9월 30일을 기점으로 1일차가 시작되고 그것을 해내기 위해 글을 써본다.또한 정보처리기사 실기가 잡혀있는데. 병행해서 해야만한다.

컴퓨터 구조인프런워밍업클럽스터디모임감자빠타박스언리얼엔진CS지식CS게임개발자

또니

[인프런 워밍업 클럽 2기 CS] 3주차 미션

[운영체제]메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요. => CPU에 존재하고 휘발성 메모리인 레지스터, 메인 메모리에 있는 값을 레지스터로 옮기는 시간을 줄이기 위해 데이터를 가져와 저장하는 캐시, 실제 운영체제와 프로세스가 올라가는 휘발성 메모리인 메모리, 비휘발성이며 작업된 데이터를 저장하는 보조 저장장치가 있습니다.사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?=> 경계 레지스터 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?=> 가변분할 방식은 프로세스 크기에 따라 메모리를 할당하기 때문에 내부 단편화가 일어나지 않지만 외부 단편화가 발생합니다. 고정분할 방식은 외부 단편화를 해결하고, 메모리 관리를 효율적으로 하지만 내부 단편화가 일어나는 단점이 있습니다.CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?=> 스레싱 HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요? 이유를 함께 적어주세요.=> 컴퓨터를 활성화 시키기 위해선 CPU를 동작시켜야하는데 이때 운영체제가 필요하다. 이때 운영체제가 저장되어야하는데, RAM과 같은 메모리는 휘발성이므로 저장을 할 수 없지만 HDD나 SSD는 비휘발성으로 운영체제를 저장하여 사용하기 때문에 필요하다.파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?=> 파일을 삭제하면 모든 정보를 지우는 것 보다 헤더를 삭제하고 free block list에 추가한다. 이때 사용했던 데이터 블록이 그대로 저장되어 있어 복구할 수 있다.[자료구조와 알고리즘]1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블 정렬장점: 가장 단순하고 이해가 쉽다.단점: 성능이 좋지 않다.시간 복잡도: O(n^2)선택 정렬장점: 이해와 구현이 간단하다.단점: 성능이 좋지 않다.시간 복잡도: O(n^2)삽입 정렬장점: 이해와 구현이 간단하다.단점: 성능이 좋지 않다.시간 복잡도: O(n^2)병합 정렬장점: 버블, 선택, 삽입 정렬보다 성능이 좋다.단점: 이해하기 어렵고, 구현하기 어렵다.시간 복잡도: O(n log n)퀵 정렬장점: 적은 메모리 공간을 사용해 성능이 좋다.단점: 이해하기 어렵고, 구현하기 어렵다. 시간복잡도: O(n log n)메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요.=> 메모이제이션은 재귀를 사용기 때문에 메모리 비용이 크지만, 타뷸레이션은 반복문을 사용하기 때문에 메모리의 크기를 예측 할 수 있습니다. 때문에 타뷸레이션을 사용할 것 같습니다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

또니

[인프런 워밍업 클럽 2기 CS] 3주차 발자국

[3주차 학습 내용]자료구조와 알고리즘삽입 정렬: 정렬되지 않은 위치에서 데이터를 꺼내 정렬된 위치의 적절한 곳에 삽입하는 알고리즘이해와 구현이 간단하지만 성능이 좋지 않다.O(n^2)의 시간복잡도를 가지고 있다.병합 정렬: 해결하기 힘든 문제가 발생하면 해결하기 쉬울 때까지 쪼개어 하나씩 해결하는 알고리즘이해와 구현이 어렵지만 성능이 좋다.O(n log n)의 시간복잡도를 가지고 있다.퀵 정렬: 분할 정복 알고리즘의 하나로 배열의 값 중 하나를 피벗으로 설정하여 정렬하는 알고리즘이름과 같이 보통은 빠르고, 메모리 사용량이 적다.피벗의 선택에 따라 성능의 차이가 있고, 최악의 경우 속도가 느려질 수 있다.보통은 O(n log n), 최악의 경우 O(n²)의 시간복잡도를 가지고 있다.메모이제이션: 계산 결과를 기억해 중복된 계산을 하지 않는 기법하향식 계산 방식속도는 빠르지만 메모리의 사용량이 있다.타뷸레이션: 계산에 필요한 값을 전부 계산 한 뒤 테이블에 저장하는 기법상향식 계산 방식 운영체제가상메모리, 동적주소변환, 세그멘테이션, 페이징, 페이지드 세그멘테이션, 디맨드 페이징, 페이지 교체 정책스레싱과 워킹셋, 입출력 장치,파일 시스템[3주차 회고]3주간의 스터디가 이렇게 마무리 되었다. 정말 필요했던 자료구조 지식을 공부하여 알고리즘 문제를 푸는데 큰 도움이 되었고, 회사에서 일을 하는데에 운영 체제 지식이 조금 필요했던 타이밍에 좋은 기회로 공부하여 의견을 제시할 수 있어서 일을 잘 마무리 할 수 있었다. 이번 CS지식 강의는 정말 어렵고 지루할 수 있었던 분야를 그림으로 쉽게 풀어 이해할 수 있도록 설명해주신 것이 이해하는데에 엄청 큰 도움이 되었다.비록 중간 점검때에 야근 이슈로..참여를 하지 못해 수료는 하지 못했지만 끝까지 공부할 수 있는 환경과 목표를 가질 수 있게 좋은 프로그램을 만들어주신 인프랩 직원분들과 좋은 강의를 제공해주신 감자님께 감사인사드립니다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

빠타박스

[인프런 워밍업클럽 2기] CS전공지식_발자국_3주차 (Final)

1. 개요이름: 인프런 워밍업 클럽 2기 - CS 전공지식 빠타박스 [신충식]기간: 2024.10.14 - 2024.10.182. 목표 및 성과설정한 목표: 가벼운 학습 CS 지식 습득 및 중요한 부분에 대한 습득달성한 성과: 마무리 지점에 여러가지 중요한 내용이 운영체제를 통해 습득하게 되었다. 3. 잘된 점 (Keep)성공적인 요소:4. 개선할 점 (Problem)문제점 : 이번 과정이 끝나더라도 한번더 복습해야 한다. (정리하지 못한 부분도 존재한다)   5. 다음 단계 (Try)향후 계획: 정보처리기사 실기 시험이 끝나고 해당 내용을 복습하고자 한다. 무제한 강의 특성상 좋다. 휴.. 인생실기 시험 끝나면 심화도 봐서 코딩테스트 문제를 풀기에 적합할 수 있도록 되어야 겠지..그리고 아직 적지 못한 C++코드를 분석할 예정이다.  6. 기타 의견일주일 동안 학습하며3주차 과정은 조금 힘든 과정이다 지금 이걸 작성하고 내일 모래면 정처기 실기시험이 있다.최선을 다하자... 이 실기가 끝나면 꼭 1트만에 합격해서 끝내고 알고리즘 자료구조를 학습하고 면접 내용을 정리하며,프로젝트를 진행하면서 게임 출시까지도 보고 앞으로 나아가자...3주차 미션에 대해휴.. 3주차 미션은 좀 더 운영체제 같은 것 들을 중요시 했고 간단하면서도 어려웠다.이 이유는 내가 정처기에 빠져있고, 현재로써 제대로된 집중을 하지 못했기 때문이다.즐거웠다. 이 과정을 지나면서 하지만. 스터디 클럽이라기 보다. 자기주도 학습 유도 와 보상심리를 이용한 나아감이였다. 꼭 완주 하고 싶다. 하지만 배워야한다. 라는 느낌? 그래도 이 과정이 있어서 정말 다행이다. 저렴하게 강의 시청을 할 수 있었다는 점과. 이 과정의 커리큘럼대로 시간표대로 진행함에 있어서 어려움을 좀 덜 느꼈던거 같다. 다양한 사람들의 학습 방법에 대해 한번 눈여겨 보기도 한다.  요즘 젊은이들은 어떻게 공부하는가... 흠... 나에게 적용할 부분이 무엇인가. 미션을 좀 이렇게 해볼걸...이번 풀이는 좀 구글링 한 부분도 있었다. 아무래도 제대로된 이해를 하기 힘든 부분이 있었다. 이번 학습에 대해서 아직 제대로 정리도 못한 상황이다. 실기가 끝나면 바로 적용해야지  빠타박스노션 https://gibeonsoftwork.notion.site/2-CS-10e530ec4ad680ff802cf36606049182?pvs=4 소감내 군대시절 우연히~들었던 믿지 못할 한마디~게임 개발 할 수 있다는 매혹적인 얘기내게 꿈을 심어주었어~ 말도 안돼 고갤 저어도~내안에 나 나를보고 속삭여~코테 공부하는 자는 CS 필수라고~용기를 내 넌 할 수 있어!쉼 없이 흘러가는 3주~ (정처기는 6주째)이대로 !!! 유튜브 볼순 없잖아~~!!!인프런과 도전하는거야!!!인프런 감자 손을잡고!정처기 CS 모두의 꿈을 모아서!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~ 감자의 거센 속도~!!! javascript!~~!!!!빠타 앞길 막아서도 결코 두렵지 않아(chatgpt~~!)끝없이 펼쳐진 수많은 코드들~~~밝은 미래 위한 거야~~~~ 인프런!~ 

알고리즘 · 자료구조cs-미션-발자국cs-발자국인프런워밍업클럽2기워밍업CS지식자료구조알고리즘감자타이틀곡

또니

[인프런 워밍업 클럽 2기 CS] 2주차 발자국

[2주차 학습 내용]자료구조와 알고리즘재귀: 어떠한 것을 정의 할 때 자기 자신을 참조하는 것프로그래밍에서 콜스택과 같다.FILO의 특징을 가지고 있다.버블정렬: 앞과 뒤의 값을 비교해서 자리를 비교하는 알고리즘가장 단순하지만 성능이 좋지 않다.O(n^2)의 시간복잡도를 가지고 있다.선택 정렬: 정렬되지 않은 첫번째 값을 시작으로 마지막 원소까지 비교하여 가장 작은 값과 자리를 바꾸는 알고리즘이해와 구현이 간단하지만 버블정렬과 마찬가지로 O(n^2)의 시간복잡도를 가지고 있다. 운영체제SJF, RR, MLFQ, 프로세스 간 통신, 공유자원과 임계구역, 세마포어, 모니터데드락, 데드락 해결, 메모리 종류, 메모리와 주소, 메모리 할당방식 [2주차 회고]처음 재귀에 대해 공부할때 이해하기 힘들었고, 당시에 완벽하게 이해를 하지 못하고 넘어갔었다. 하지만 이번 기회로 정확하게 재귀란 무엇인지 이해하게 되어 알고리즘에 한번 적용해보아야겠다.운영체제는 '이게 정말 무슨말이지..'할 정도로 멍하니 듣다가 끝낸 것 같다..지금은 이런게 있구나 정도로만 알고 넘어간 뒤 다시한번 강의를 들으면서 이해를 하는 것이 필요할 것 같다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

또니

[인프런 워밍업 클럽 2기 CS] 2주차 미션

[운영체제]FIFO 스케줄링의 장단점이 뭔가요?=> 선입선출의 구조로 단순하고 직관적이라는 장점이 있지만, 한 프로세스가 끝나야 그 다음 프로세스가 실행 되기 때문에 비효율적인 상황이 될 수 있습니다.SJF를 사용하기 여러운 이유가 뭔가요?=> 프로세스가 얼마나 실행될지 예측하기 어렵고, 실행시간이 너무 긴 프로세스는 뒤로 밀려나기 때문에 언제 실행될지 모른다는 단점이 있습니다.RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?=> 컨텍스트 스위칭이 너무 자주 일어나 실행되는 프로세스의 처리량보다 컨텍스트 스위칭을 처리하는 양이 더 커져 오버헤드가 커지는 상황이 발생합니다.운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?=> CPU 스케줄러에 의해 강제로 CPU를 뺐긴다면 CPU Bound Process이고, CPU를 사용하다가 스스로 반납하게 되면 I/O Bound Process입니다.공유자원이란무엇인가요?=> 프로세스들이 공동으로 사용하는 변수, 파일 등을 말합니다.교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?=> 상호배제, 비선점, 점유와 대기, 원형 대기가 모두 충족되어야 합니다. [자료구조와 알고리즘]재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?=> 코드가 끝나지 않게 되어 무한반복이 되거나, 잘못 반복이 되어 잘못된 결과가 나올 수 있습니다.0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.function sumOdd(n){ if(n <= 0) return 0; if(n %= 2 == 0){ return 0 + sumOdd(n - 1); }else { return n + sumOdd(n - 1); } } console.log(sumOdd(10)) // 25알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

또니

[인프런 워밍업 클럽 2기 CS] 특별 미션

회사에서 야근 이슈로 참여하지 못했던 중간 점검을 만회할 수 있는 기회를 주시다니 감사합니다🥰 특별 미션)  실수로 워밍업 클럽 출석을 빼먹었는데 우연히 데이터를 수정할 수 있는 권한이 주어졌습니다. 러너분의 이름(name)과 출석수(count)가 저장된 배열에서 여러분(나)의 데이터를 퀵정렬을 이용해 오름차순 정렬하고 가장 첫 번째 데이터인 여러분의 출석수를 변경하도록 코드를 작성해주세요. (퀵정렬 구현 부분도 변경)function quickSort (arr, left, right) { if (left < right) { let index = divide(arr, left, right); quickSort(arr, left, index - 1); quickSort(arr, index + 1, right); } } function divide(arr, left, right) { let rightCnt= arr[right].count; let leftIndex = left - 1; for (let i = left; i < right; i++) { if (arr[i].count <= rightCnt) { leftIndex++; [arr[leftIndex], arr[i]] = [arr[i], arr[leftIndex]]; } } [arr[leftIndex + 1], arr[right]] = [arr[right], arr[leftIndex + 1]]; return leftIndex + 1; } let user1 = { name: "홍길동", count: 5 }; let user2 = { name: "임꺽정", count: 4 }; let user3 = { name: "이순신", count: 3 }; let user4 = { name: "나", count: 1 }; let user5 = { name: "짱구", count: 5 }; let arr = [user1, user2, user3, user4, user5] console.log("===== 정렬 전 ====="); console.log(arr); quickSort(arr, 0, arr.length - 1); arr[0].count = 5 console.log("===== 정렬 후 ====="); console.log(arr); [예상 결과] ===== 정렬 전 ===== [ { name: '홍길동', count: 5 }, { name: '임꺽정', count: 4 }, { name: '이순신', count: 3 }, { name: '나', count: 1 }, { name: '짱구', count: 5 } ] ===== 정렬 후 ===== [ { name: '나', count: 5 }, { name: '이순신', count: 3 }, { name: '임꺽정', count: 4 }, { name: '홍길동', count: 5 }, { name: '짱구', count: 5 } ] 

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

또니

[인프런 워밍업 클럽 2기 CS] 1주차 미션

[운영체제]while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다.이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?=> 인터럽트 방식, 스킬이 사용 되었을 경우 응답을 받는 방식으로 이용한다.프로그램과 프로세스가 어떻게 다른가요?=> 프로그램은 .exe와 같은 실행 파일을 의미하고, 이 .exe와 같은 실행 파일을 실행 했을 때 메모리에 올라가 실행 중인 프로그램 이다.멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?=> 멀티프로그래밍은 메모리에 여러개의 여러 개의 프로세스가 올라가는 것이고, 멀티 프로세싱은 CPU가 여러개의 프로세스를 처리하는 것이다.운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?=> 운영체제는 PCB에 담긴 프로세스의 정보를 사용하여 프로세스를 관리한다. 프로세스마다 PCB가 생성되고, 프로세스가 종료되면 PCB도 제거 된다. 이 PCB는 자료구조에서 배웠던 연결리스트로 구성되어 있다. 컨텍스트 스위칭이란 뭔가요?=> A 프로그램이 실행되고 있는 상태에서 B 프로그램이 실행 되도록 하는 것을 말한다. 이때 A 프로그램이 멈춘 시점에서 다시 시작 될 수 있도록 PCB A에 A 프로그램의 상태 값을 저장한 뒤, B 프로그램을 실행하기 위해 PCB B에 있는 이전 상태 값으로 CPU 레지스터 값을 설정한다.[자료구조와 알고리즘]여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.=> 해시테이블, 학생은 학생 고유의 학번을 가지고 있기 때문에 학번을 Key로 하는 해시 테이블을 사용할 것입니다.해시테이블은 동적으로 크기를 변화시키는데 유연하여 전학을 오고 갈 수 있는 학생의 정보를 자유롭게 삽입 및 삭제가 가능합니다. 또한, O(1)의 시간복잡도를 가지기 때문에 빠르게 학생의 정보를 검색할 수 있기 때문에 해시테이블을 선택하였습니다.여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.=> 큐(Queue), 큐는 선입선출로 먼저 들어온 값이 먼저 나가는 특징을 가지고 있습니다. 주문이 들어온 순서대로 처리되는 프로그램을 개발하기 위해선 큐를 선택하는 것이 적합한 자료구조라고 생각합니다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제

알고리즘 · 자료구조CS지식인프런워밍업클럽2기

채널톡 아이콘