Group Study (2022-2023) 83

[Computer Science] 4주차 스터디 - OSI 7계층, 서브넷 마스크, DNS

OSI 7계층 OSI (Open Systems Interconnection) 은 개방형 시스템간 상호 접속. 즉, 서로 다른 컴퓨터나 네트워크간의 상호 접속을 용이하게 하기 위해 ISO (국제표준화기구) 가 규정한 네트워크 프로토콜을 말한다. 기종이나 언어가 다른 컴퓨터들을 서로 연결해 통신하려면 연결 방식을 표준화해야 한다. 따라서 다음과 같은 OSI 7계층 모델을 제안하였다. 7단계로 나눈 이유는 통신이 일어나는 과정을 나누어서 나중에 이상이 생기면 어떤 단계에서 문제가 생겼는지를 파악하기 위함이다. ■ 물리 계층: 네트워크 선 깔기 ■ 데이터 링크 계층: 물리적 전송 오류를 감지(Sense)하는 기능을 제공해 송수신 호스트가 오류를 인지할 수 있게 해준다. ■ 네트워크 계층: IP 주소체계, 데이터..

[Coding Test] 5주차 - DFS와 BFS

주제 DFS와 BFS 1. DFS와 BFS? 대표적인 그래프 탐색 알고리즘으로 DFS(Deep First Search), BFS(Breadth First Search) 두 종류가 있다. 그래프 순회 문제는 주로 그래프의 한 정점에서 시작해 남은 모든 정점을 방문하는 문제 + 그래프란? 연결되어있는 원소간의 관계를 표현한 자료구조 중 하나로 정점(노드)과 간선의 집합이다. 더보기 정점(Vertex) : 노드라고도 하며 데이터를 저장 간선(Edge) : 정점을 연결하는 선 (link, branch 모두 같은 말) 인접 정점(adjacent Vertex) : 간선에 의해 직접 연결된 정점 단순 경로(simple path) : 경로에서 같은 간선을 두번 지나가지 않는 경로 차수(degree) : [무방향 그래프..

[Computer Science] 3주차 스터디 - 동시성과 병렬성, 동기 비동기

동시성과 병렬성 동시성 동시성은 여러 작업이 겹치는 기간에 실행될 수 있음을 의미한다. 동시에 실행하는 것이 아니라 CPU가 작업마다 시간을 분할하여 적절하게 context switching을 통해 동시에 실행되는 것처럼 보이게 하는 것이다. 동시성의 핵심 목표는 유휴 시간을 최소화하는 것이다. (유휴 시간: 컴퓨터가 작동가능하나 작업이 없는 시간) 구현과 디버그가 어렵다는 단점이 있다. 현재 프로세스/스레드가 I/O 작업, DB 트랜잭션 등 외부 프로그램 실행을 기다리는 동안에 다른 프로세스/스레드가 CPU 할당을 받는다. 병렬성 병렬성은 동일한 시간에 독립적인 작업을 실행할 수 있음을 의미한다. 동시성과는 달리 여러 작업을 다른 코어, 다른 프로세스, 별도의 컴퓨터 등에서 동시에 실행할 수 있다. 그..

[Coding Test] 4주차 - Implementation

04-DataStructure4 주제 구현 완전구현 시뮬레이션 구현 문제 · 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 코딩 테스트에서는 구현이 중심이 되는 문제가 자주 출제된다. ex) 완전 탐색, 시뮬레이션 유형 ▶ 완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 ▶ 시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행해야 하는 문제 21918번 : 전구 21918번: 전구 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { /** * N -> 전구 개수 * M -> 명령어의 개수 * 1 -> 전..

[Coding Test] 3주차 - Greedy

Greedy 탐욕 알고리즘은 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 각 단계에서 최선의 선택을 한 것이 전체적으로도 최선인 상황에서 사용할 수 있는 알고리즘이다. 그리디 알고리즘은 동적 프로그래밍 사용 시 지나치게 많은 일을 한다는 것에서 착안하여 고안된 알고리즘이다. 동적 프로그래밍을 사용하여 풀 수 있는 문제 중 부분 최선이 전체 최선인 경우, 시간 복잡도를 줄이기 위해 사용한다. 예를 들어 최소 비용을 구하는 문제에서 언제나 비용이 작은 것을 골랐을 때 그 답이 곧 전체의 최소 비용이 되는 경우이다. 현재 상황에서 지금 당장 좋은 것만 고르는 접근 방법이다. 부분 정답이 항상 전체 정답을 포함하고 있을 때 사용할 수 있는 방법이다. 그리디 알고리즘을 이용해 문제를 풀면..

[Computer Science] 2주차 스터디 - Context Switching + CPU 스케줄링 + Deadlock

Context Switching ✅ 문맥? CPU가 하나의 프로세스를 실행하기 위해 기억해야 할 프로세스 정보 문맥은 PCB에 저장된다. ✅ PCB(Process Control Block)? : 프로세스와 관련된 정보를 저장하는 자료 구조 해당 프로세스를 식별하기 위해 꼭 필요한 정보를 저장 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기 →PCB에 담기는 정보 프로세스 ID(PID) 특정 프로세스를 식별하기 위해 부여하는 고유 번호 레지스터 값 프로세스는 이전 작업을 이어가기 위해 레지스터의 중간값을 복원한다. 따라서 카운터(다음 실행할 명령어의 주소)와 레지스터 값이 저장된다 프로세스 상태 생성, 준비, 수행, 대기, 중지 CPU 스케줄링 정보 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대..

[Coding Test] 2주차 - Data Structure2

🟡14425 문자열 집합 설명 N개의 문자열로 이루어진 집합 S가 주어졌을 때, 주어지는 M개 문자열 중에서 집합 S에 속하는 문자열이 몇 개인지 구하는 문제이다. N개의 문자열이 주어지면 그 문자열을 key값으로 0을 value값으로 하는 딕셔너리를 만든다. M개의 문자열을 차례로 돌면서 집합S안에 존재하면 count 값을 +1 해준다. 딕셔너리는 해시테이블로 구현되어 있어 내용을 순차적으로 보는 것이 아니라 해당 단어를 바로 찾아가기 때문에 이 과정은 시간복잡도가 O(1)이다. import sys input = sys.stdin.readline n, m = map(int, input().split()) s = {} count = 0 for i in range(n): str = input().rstri..

[Coding Test] 1주차 - Data Structure1 (스택, 큐, Deque)

💗10799 쇠막대기 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net [ 풀이 ] 스택 이용 "(" 일 경우 스택에 일단 append ")"일 경우 레이저인지 아닌지 구분해야함 ")"일 때 바로 이전 문자가 "("라면 레이저이므로 스택 길이만큼 쇠막대기 개수 더하기 바로 이전 문자가 "(" 가 아니라 ")"라면 쇠막대기이므로 +1 [ 코드 ] steel = list(input()) stack = [] result = 0 for i in range(len(..

[Computer Science] 팀 구성과 그라운드 룰

스터디 진행 방식 일주일 동안 주차별 키워드에 대해 공부하고, 예상 질문을 최소 2개씩 준비한다 노션- 스터디기록 페이지에 공부 내용을 모두 올린다. (외부링크, 노션 내 기록,깃허브 등) 스터디 시간에 그 주의 발표자가 주제에 대해 발표하고, 스터디원들과 함께 내용 보충 및 예상질문 공유한다 스터디 시간 이후 발표자는 티스토리에 스터디에서 이루어진 내용(보충 및 질문 내용)을 정리해 올린다. 스터디원 김수빈,김은지,유수화,이다연,정영주,최수연,한채연 Ground Rules 반말하기 하루 전까지 불참사유와 함께 얘기해주기 스터디 불참 1000원/지각시 500원씩 스터디 시작때 각자 근황 공유하기 발표 순서는 이름순으로 하되 한바퀴 돌고나서는 사다리타기 주차별 계획