블로그
전체 13#카테고리
- 알고리즘 · 자료구조
- 백엔드
#태그
- CS지식
- 인프런워밍업클럽
- 2기
- 인프런워밍업클럽스터디
- 백엔드
- 0기
- 인프런워밍업스터디
- 인프런
2024. 10. 26.
0
[인프런 워밍업 클럽 2기 CS] 특별 미션
회사에서 야근 이슈로 참여하지 못했던 중간 점검을 만회할 수 있는 기회를 주시다니 감사합니다🥰 특별 미션) 실수로 워밍업 클럽 출석을 빼먹었는데 우연히 데이터를 수정할 수 있는 권한이 주어졌습니다. 러너분의 이름(name)과 출석수(count)가 저장된 배열에서 여러분(나)의 데이터를 퀵정렬을 이용해 오름차순 정렬하고 가장 첫 번째 데이터인 여러분의 출석수를 변경하도록 코드를 작성해주세요. (퀵정렬 구현 부분도 변경)function quickSort (arr, left, right) { if (left
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽
・
2기
2024. 10. 20.
1
[인프런 워밍업 클럽 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기
2024. 10. 20.
1
[인프런 워밍업 클럽 2기 CS] 3주차 발자국
[3주차 학습 내용]자료구조와 알고리즘삽입 정렬: 정렬되지 않은 위치에서 데이터를 꺼내 정렬된 위치의 적절한 곳에 삽입하는 알고리즘이해와 구현이 간단하지만 성능이 좋지 않다.O(n^2)의 시간복잡도를 가지고 있다.병합 정렬: 해결하기 힘든 문제가 발생하면 해결하기 쉬울 때까지 쪼개어 하나씩 해결하는 알고리즘이해와 구현이 어렵지만 성능이 좋다.O(n log n)의 시간복잡도를 가지고 있다.퀵 정렬: 분할 정복 알고리즘의 하나로 배열의 값 중 하나를 피벗으로 설정하여 정렬하는 알고리즘이름과 같이 보통은 빠르고, 메모리 사용량이 적다.피벗의 선택에 따라 성능의 차이가 있고, 최악의 경우 속도가 느려질 수 있다.보통은 O(n log n), 최악의 경우 O(n²)의 시간복잡도를 가지고 있다.메모이제이션: 계산 결과를 기억해 중복된 계산을 하지 않는 기법하향식 계산 방식속도는 빠르지만 메모리의 사용량이 있다.타뷸레이션: 계산에 필요한 값을 전부 계산 한 뒤 테이블에 저장하는 기법상향식 계산 방식 운영체제가상메모리, 동적주소변환, 세그멘테이션, 페이징, 페이지드 세그멘테이션, 디맨드 페이징, 페이지 교체 정책스레싱과 워킹셋, 입출력 장치,파일 시스템[3주차 회고]3주간의 스터디가 이렇게 마무리 되었다. 정말 필요했던 자료구조 지식을 공부하여 알고리즘 문제를 푸는데 큰 도움이 되었고, 회사에서 일을 하는데에 운영 체제 지식이 조금 필요했던 타이밍에 좋은 기회로 공부하여 의견을 제시할 수 있어서 일을 잘 마무리 할 수 있었다. 이번 CS지식 강의는 정말 어렵고 지루할 수 있었던 분야를 그림으로 쉽게 풀어 이해할 수 있도록 설명해주신 것이 이해하는데에 엄청 큰 도움이 되었다.비록 중간 점검때에 야근 이슈로..참여를 하지 못해 수료는 하지 못했지만 끝까지 공부할 수 있는 환경과 목표를 가질 수 있게 좋은 프로그램을 만들어주신 인프랩 직원분들과 좋은 강의를 제공해주신 감자님께 감사인사드립니다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽
・
2기
2024. 10. 13.
1
[인프런 워밍업 클럽 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 알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽
・
2기
2024. 10. 13.
1
[인프런 워밍업 클럽 2기 CS] 2주차 발자국
[2주차 학습 내용]자료구조와 알고리즘재귀: 어떠한 것을 정의 할 때 자기 자신을 참조하는 것프로그래밍에서 콜스택과 같다.FILO의 특징을 가지고 있다.버블정렬: 앞과 뒤의 값을 비교해서 자리를 비교하는 알고리즘가장 단순하지만 성능이 좋지 않다.O(n^2)의 시간복잡도를 가지고 있다.선택 정렬: 정렬되지 않은 첫번째 값을 시작으로 마지막 원소까지 비교하여 가장 작은 값과 자리를 바꾸는 알고리즘이해와 구현이 간단하지만 버블정렬과 마찬가지로 O(n^2)의 시간복잡도를 가지고 있다. 운영체제SJF, RR, MLFQ, 프로세스 간 통신, 공유자원과 임계구역, 세마포어, 모니터데드락, 데드락 해결, 메모리 종류, 메모리와 주소, 메모리 할당방식 [2주차 회고]처음 재귀에 대해 공부할때 이해하기 힘들었고, 당시에 완벽하게 이해를 하지 못하고 넘어갔었다. 하지만 이번 기회로 정확하게 재귀란 무엇인지 이해하게 되어 알고리즘에 한번 적용해보아야겠다.운영체제는 '이게 정말 무슨말이지..'할 정도로 멍하니 듣다가 끝낸 것 같다..지금은 이런게 있구나 정도로만 알고 넘어간 뒤 다시한번 강의를 들으면서 이해를 하는 것이 필요할 것 같다.알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽
・
2기
2024. 10. 06.
0
[인프런 워밍업 클럽 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기
2024. 10. 06.
1
[인프런 워밍업 클럽 2기 CS] 1주차 발자국
[1주차 학습 내용]자료구조와 알고리즘배열, 연결리스트, 스택, 큐, 덱, 해시테이블, 셋자료구조 7가지의 개념과 시간복잡도에 대한 설명자료구조 7가지 코드로 구현해보기 운영체제운영체제에 대한 개념프로세스와 쓰레드에 대한 개념 및 관리 방법CPU 스케줄링에 대한 개념 및 동작방법[1주차 회고]지금까지 자료구조에 대한 개념 없이 무지성으로 매일 한 문제씩 알고리즘을 풀고 있었다.이제는 자료구조에 대한 개념이 필요한 상태였는데, 막상 공부를 하려고 하니 너무 어려웠고이해가 되지 않는 부분들이 너무 많았다. 근데 이번 강의는 그림으로 설명해주고 코드로 구현까지 하며 개념을 익히니정말 귀에 쏙쏙 들어왔다.반면 운영체제는 무작정 어렵다고만 생각해서 인지 강의 1번만으로는 제대로 개념을 익히지 못하였다.다음 2주차에는 1주차의 강의를 복습하면서 이해해보려고 노력해야겠다. 알고리즘 강의 링크 👉그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)운영체제 강의 링크 👉그림으로 쉽게 배우는 운영체제
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽
・
2기
2024. 10. 06.
0
[인프런 워밍업 클럽 2기 CS] 좋은 기억만 남겨준 워밍업 클럽😉
안녕하세요! 지난 0기엔 취업준비생에서 이번 2기엔 직장인으로 다시 한번 참여하게 되었습니다!올해 2월 평소 눈여겨 보던 강의가 마침 스터디 강의로 선정되었고,나태해지는 마음을 다시 잡기 위해 시작한 워밍업 클럽은 정말 제게 좋은 기억만 남겨주었습니다😁 내 생각을 적으면서 다양하게 코드를 접근해보려고 노력했고, '항상 재밌다.' 라는 말을 달고 살며 참여한 결과우수러너가 되는 영광과 워밍업 클럽이 끝나자마자 저는 지금 다니는 회사에서 합격 소식을 듣게 되었습니다. 이전에는 취업하면 내가 잘 할 수 있을까 라는 걱정이 가득했는데,이번엔 공부하자마자 취업을 해서 그런지 회사에서 못할 것 같다는 두려움 없이 하루하루 행복해하며 회사를 다니고 있습니다. (회사 가는게 아직도 설레요..❤) 이 좋은 기억을 다시 한번 남겨 보기 위해 2기에 참여하게 되었습니다ㅎㅎ이번에도 많은 지식과 좋은 기억을 2기 러너분들과 함께 남겨보고 싶습니다!이번 2기도 화이팅 입니다!💪(2기 시작을 알리는 글 겸 근황을 공유하기 위해 두서 없이 써보는 글..)
알고리즘 · 자료구조
・
CS지식
・
인프런워밍업클럽스터디
・
2기
2024. 03. 17.
3
[인프런 워밍업 클럽 0기 BE] 오프라인 수료식 후기
[오프라인 수료식 후기]3주간의 시간이 지나고, 워밍업 클럽 스터디가 끝나면서 오프라인 수료식을 다녀왔다.[첫번째 순서]낯을 조금 가리는 탓에 처음 도착해서는 앉아서 멀뚱멀뚱 사무실만 구경하고 있었다.감사하게도 같은 테이블에 계신 러너분께서 먼저 대화를 걸어주셔서 수료식 시작 전까지 신나게 대화하였고,다른 러너 두분께서 추가로 오셔서 첫번째 순서인 저녁 식사를 하며 또 다시 수다 타임을 가졌다.[두번째 순서]식사를 마치고 두번째 순서는 지식 공유자분들의 Q&A 타임이었다.질문은 사전에 러너분들께서 작성해주신 질문에서 몇개 골라 선정된 질문들이었다.취업에 관한 질문, 개발자에 대한 질문 등등 여러가지 질문들이 있었는데, 그동안 내가 많이 고민했던 질문들이 많았고내가 고민했던 것과 지식공유자분들이 답변해주신 것과 일치해서 조금은 안도(?) 하였다.🤣[세번째 순서]이후 세번째 순서는 우수러너 시상식이었다. 나는 처음부터 우수러너에 대한 기대는 크게 없었다.블로그도 누군가에게 보여주기 보다는 내가 공부하고 기록하는 곳으로 사용했고 깔끔하게 작성하는 편도 아니다.열심히 해보겠다는 의지는 강했지만 실력자분들이 많아 이런 쉬운 질문을 해도 될까? 라는 생각에 질문을 망설였다.(조금 더 찾아보니 혼자서도 충분히 해결 가능했던 질문들이 많았다ㅎㅎ)위와 같은 이유로 우수러너는 포기하였고, 완주와 내 실력 향상에 초점을 맞추어 묵묵히 열심히 하였다.그런데!!우수러너 명단에 내 이름이 있던 것이었다!!감사하게도 우수러너로 선정되어 인프런의 귀여운 굿즈를 받게 되었다!다시 한번 감사드립니다.[마지막 순서]그렇게 기쁜마음으로 시상식을 마치고 마지막 순서인 네트워킹을 가졌다.조별로 나누어 앉았고 각 조별로 코치님과 인프런 개발자 한분씩 들어가 네트워킹을 가졌다.내가 있던 테이블에는 인프런에서 5년째 일하고 계신 프론트엔드 개발자분이셨고,현재 취업 시장이 어떤지, 현업에서는 어떻게 일하는지 등등 유익한 이야기를 나누며 수료식은 끝이 났다.[스터디를 하면서 느낀점]그동안 공부하면서 이해되지 않았던 부분이 이번 강의를 통해 이해가 되어 고구마 100개 먹은 가슴이 뻥 뚫렸고,궁금한 부분에 대해 해결하고 고민하는 방법을 얻을 수 있어서 좋았다.이전엔 오류가 나고 해당 매서드에 대해 궁금하면 무작정 인터넷을 먼저 찾았지만이제는 해당 매서드에 들어가서 어떤 것들로 구성되어 있고, 해당 오류는 어떤 오류인지 공식문서나 해당 코드를 통해먼저 생각하고 고민해보는 습관이 형성되어 좋았다.짧다면 짧고 길다면 긴 3주동안 재미있게 공부하며 즐겼던 스터디였다.스터디를 진행해주시고 늦은 시간까지 수료식을 위해 자리를 만들어주신 인프랩 임직원분들,바쁘실텐데 중간 중간 깜짝 특강을 진행해주시고 예정된 시간이 지나도 목소리가 쉬어가며 질문과 정보 전달을 위해열정을 보여주신 최태현 코치님께 감사인사 드립니다.그리고 3주간 함께 달리신 러너분들 고생 많으셨습니다!😁
백엔드
・
백엔드
・
인프런워밍업클럽
・
0기
2024. 03. 10.
1
[인프런 워밍업 클럽 0기 BE] 3주차 발자국
[3주차 학습내용]이번 3주차에서는 JPA 연관관계 매핑하기 강의에서 만들었던 도서관리 프로그램 배포하기를 하였다.JPA를 조금 더 객체지향적으로 코드를 고쳐볼 수 있었다. [3주차 과제]3주차에서 진행한 미니프로젝트는 출퇴근 사내 관리프로그램이었다.JPA에 대한 개념이 많이 부족해 생각한 대로 프로그램은 돌아가는데 제대로 코드를 작성한게 맞는지, 코드는 깔끔하게 짰는지 등등 많은 생각이 들었다. 그래도 이번 강의를 통해서 JPA가 무엇인지 어떻게 사용하는지 그리고 스프링에 대한 개념에 대해 조금 더 와닿게 되었다.미니프로젝트 👉 https://ddonydev.tistory.com/83 [마무리 및 느낀점]오래된 취준 기간으로 약간의 강제성이 필요할 때 우연히 인프런 워밍업 클럽 스터디를 접하게 되었고, 현재 나에게 제일 필요했던 공부인 JPA를 공부할 수 있어 정말 뜻 깊은 스터디였다. 단순 강의만 듣는 것이 아닌 미션과 미니프로젝트를 병행하여서 강의 내용을 보다 더 쉽게 이해할 수 있었다.이번 스터디로 습득한 지식을 바탕으로 조금 더 공부하여 나머지 2,3,4단계까지 마무리 해보고 개인 서버에 배포까지 해볼 예정이다.
백엔드
・
백엔드
・
0기
・
인프런워밍업스터디