CS

    call by value vs call by reference

    call by value vs call by reference

    📔 call by value vs call by reference 정의 call by value: 값에 의한 호출 call by reference: 참조에 의한 호출 📔 call by value vs call by reference 차이 객체에는 값과 주소가 있다. 우리는 실제로 값만 보고 있지만 주소도 확인할 수 있다. c = 20 print(f'값: {c}') # 값: 20 print(f'주소: {id(c)}') # 주소: 140734032078064 어떤 함수에 argument를 전달 할 때 call by value 와 call by reference를 선택할 수 있다. call by value의 경우 함수에 값을 전달해서 그 함수안에서 해당 값을 바꾼다면? 기존의 값은 바뀌지 않는다. 우리는 값만..

    컴파일 언어 vs 인터프리터 언어

    컴파일 언어 vs 인터프리터 언어

    📔 정의 인터프리터 원시코드(사용자가 작성한 코드)를 기계어로 변환하는 과정 없이 한줄씩 해석하여 바로 실행하는 언어 대표적인 언어: python, javascript, ruby, ... 컴파일 원시코드를 기계어로 모두 변환시킨 후 변환된 코드를 실행하는 언어 대표적인 언어: C, C++ 📔 차이점 속도 보통 인터프리터 언어가 컴파일 언어보다 실행 속도가 느리다 ( 알고리즘 문제 풀 때 파이썬이 느린걸 알 수 있음) 이 기준은 런타임 기준이다. 인터프리터: 한 줄씩 해석하며 실행시키기 때문에 느림 컴파일: 모두 해석해 놓은 뒤 실행시키기 때문에 빠름 📔 예외 자바 자바는 컴파일언어이면서 인터프리터 언어라고한다 컴파일러가 원시코드를 바이트 코드로 컴파일 한다. 인터프리터가 바이트코드를 특정 OS환경에 맞게..

    프로세스와 쓰레드(process, thread)

    프로세스와 쓰레드(process, thread)

    📔 기본 용어 정리 프로그램: 실행할 수 있는 파일 (카카오톡, 크롬, 롤 같은 것) 프로세스: 실행중인 프로그램 또는 실행하고 있는 상태(위와 같은 프로그램을 실행함) 프로세서: 프로세스가 동작할 수 있도록 하는 하드웨어(CPU) 스레드: 프로세스 내에서 실행되는 작업 단위 📔 프로세스 프로세스는 컴퓨터의 자원(코드, 데이터, 힙, 스택)을 받아 한번에 하나의 일을 처리함 코드: 프로그램의 코드 데이터: 전역변수 힙: 동적으로 할당되는 메모리 스택: 호출된 함수, 매개변수, 지역변수 등 임시적인 자료 하지만 우리는 음악들으면서 코딩하고, 검색도 한다. 실제로 동시에 이루어지는 것도 있고, 동시에 이루어지는것처럼 보이는 것도 있다. 동시성(Concurrency): 프로세서 하나가 여러 작업들을 조금씩 돌..

    정렬 알고리즘 비교

    정렬 알고리즘 비교

    bubble: 인접한 두개의 원소를 비교하여 자리를 교환하는 방식 첫번쨰 원소부터 인접한 원소끼리 계속 자리를 교환 한 단계가 끝나면 가장 큰 원소가 마지막 자리에 고정 정렬이 되어있어도 모든 수를 다 확인하기 때문에 가장 비효율적인 정렬 알고리즘 selection: 기준 위치에 맞는 원소를 선택하고 자리를 교환하는 방식 원소를 돌며 가장 작은 값을 찾는다. 첫번째 원소와 바꿔준다. 첫번째 원소를 제외하고 원소를 돌며 가장 작은 값을 찾는다. 두번째 원소와 바꿔준다. 계속 진행 버블 정렬을 일부 개선함 insertion: 정렬되어 있는 부분 집합에 정렬할 새로운 원소의 위치를 삽입하는 방식 정렬된 집합 S와 정렬되지 않은 집합 U로 나눈다. U에서 맨 앞의 원소를 꺼내서 S의 맨 뒤부터 비교해준다. 자신..

    OSI 7 계층 (OSI 7 Layer)

    OSI 7 계층 (OSI 7 Layer)

    📔 OSI 7 계층 이란 OSI 참조 모델: 다른 시스템 간의 원활한 통신을 위해 ISO에서 제안한 통신 규약(Protocol) 데이터 통신 시 필요한 장비 및 처리 방법 등을 7단계로 표준화하여 규정 계층을 쪼개는 이유 통신이 일어나는 과정을 단계별로 쉽게 파악할 수 있다. 문제가 생긴 계층만 해결하면 원활하게 작동 가능 📔 OSI 7 계층 설명 물리 계층 하드웨어 ( 케이블, 허브, ... ) 전송 단위는 Bit 데이터를 아날로그 신호로 전송 ( 데이터를 전기 신호로 바꿔주는 역할 ) 송신 컴퓨터에서 데이터를 아날로그 신호로 encoding 후 전송 수신 컴퓨터에서 전송 받은 아날로그 신호를 데이터로 decoding 데이터링크 계층 하드웨어에 ( 랜카드, 브리지, 스위치) 전송 단위는 frame 흐름..

    힙 정렬(heap sort)

    힙 정렬(heap sort)

    📔 힙 정렬(heap sort) 이란 힙트리구조를 이용하여 정렬하는 알고리즘 힙트리: 최솟값이나 최댓값을 빠르게 찾아내기 위해 완전 이진 트리를 기반으로 하는 트리 힙정렬을 하기 위해서는 먼저 힙 구조를 가지도록 만들어야 한다. 히피파이 알고리즘을 통해 힙구조로 만든다. 모든 정점에 대해서 히피파이를 수행하므로 n x logn 의 시간복잡도를 가진다. 사실상 모든 정점이 아니라 절반의 정점만 해도 가능하다 n/2 x logn => (n/2이 logn 보다 크다고 가정할 때) => 결국 O(n) 의 시간복잡도를 가진다. 📔 힙 정렬(heap sort) 구현 # (최대)힙 구조 만들기 def heapify(): for i in range(1, N): c = i while c > 0: root = (c - 1..