분류 전체보기 42

[운영체제] 운영체제의 역할과 구조

💡 본 글은 면접을 위한 CS 전공지식 노트 도서를 참고하여 정리하였습니다. INTRO.. 운영체제는 우리가 익히 알고 있는 맥 OS, 윈도우, 리눅스, 유닉스 등을 생각하면 된다. 컴퓨터 시스템의 자원들을 효율적으로 관리하며, user가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어이다. 다음과 같이 이해하면 쉽다. 응용프로그램(application program)을 작성하는 프로그래머가 하드웨어를 직접 건드리기는 어렵다. 이때 OS가 그 사이에 위치하여 요청을 처리해주는 것이다. 운영체제의 역할과 구조 운영체제의 역할 운영체제(Operating System)는 컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램이다. 또한, 사용자에게 컴퓨..

운영체제 2023.12.15

[JAVA] ArrayList vs. LinkedList

ArrayList 기본적으로 배열을 사용 크기를 지정하지 않고 동적으로 값을 삽입·삭제 가능 Array vs. ArrayList Array ArrayList 생성 시 크기 지정 필수 생성 시 크기 미지정 (동적) 조회 각 데이터의 index를 가지기 때문에 random access 가능 삽입·삭제 특정 데이터를 삭제하면 뒤에 위치한 데이터들을 앞으로 이동시켜주어야 함 삽입, 삭제가 많으면 ArrayList는 비효율적임 LinkedList 각각의 노드가 데이터와 다음 노드를 가리키는 포인터를 가지고 한 줄로 연결되어 있는 방식 조회 순차적 접근이므로 검색의 속도가 느림 삽입·삭제 가리키고 있는 주소값만 변경해주면 됨. → ArrayList에 비해 훨씬 효율적

카테고리 없음 2023.11.19

[JAVA] Array vs. List vs. Vector

Array 같은 타입의 값만 관리 int 배열 : int 타입의 값만 관리 String 배열 : 문자열만 관리 길이를 늘리거나 줄일 수 없음 선언과 동시에 길이가 결정됨 한번 결정된 배열의 길이는 늘이거나 줄일 수 없음 논리적인 저장 순서 == 물리적인 저장 순서 연속된 메모리 공간을 차지함 index를 통해 접근 가능 장점 검색에 용이함 index를 통한 접근이 가능하기 때문 관리에 용이함 연속된 메모리 공간을 차지하기 때문 단점 크기가 고정되기 때문에 데이터가 삭제되는 경우에 빈 공간이 생김 -> 메모리 낭비 List 순서가 있는 데이터들의 집합 불연속적인 메모리 공간에 포인터를 통해 각 데이터들이 연결됨 크기가 동적으로 정해짐 Array vs. List Array List 크기가 정해져 있음 크기가..

카테고리 없음 2023.11.19

[Git] 다른 사람의 repository 내 repository로 복사하기

CS 스터디를 진행했는데, 내용을 추가할 때마다 팀장님의 repository에 방문해야 하는 것이 불편했다. 그래서 다음과 같은 2가지 의문점이 생겼다. 1. 팀장님의 계정에서 협업한 코드를 내 레퍼지토리로 복사하는 방법은 없을까? 2. 복사해온 repo(내 계정)와 원본 repo(팀장님 계정)가 서로 commit이 반영이 될까? 결론부터 말하면 1은 가능하고, 2번은 불가능하다. (정확히 말하자면 나는 아직 2번을 하는 방법을 모른다,,) 그 방법은 다음과 같다. 1. 내 github에서 새로운 repository를 생성한다. 2. 터미널을 열고 아래 코드를 순서대로 작성한다. 내 pc, 즉 local 환경에서 우클릭 -> 터미널 열기 -> 아래 코드 작성 (당연히 git bash에서 실행해도 됨. 편..

카테고리 없음 2023.11.11

[자료구조] 선형 자료구조

💡 본 글은 면접을 위한 CS 전공지식 노트 도서를 참고하여 정리하였습니다. 5.1 선형 자료구조 5.2.1 연결 리스트 intro 선형 = linear = 전후 1:1 연결 형태 비선형 = nonlinear = 전후 多:多 연결 형태 📌 선형 자료구조란 요소가 일렬로 나열되어 있는 자료구조이다. 하나의 자료 뒤에 하나의 자료가 존재한다. (비선형은 하나의 자료 뒤에 여러개의 자료가 존재할 수 있음) 선형 구조의 리스트는 선형 리스트(linear list)와 연결 리스트(linked list)로 나뉜다. 연결 리스트 - Linked List 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조이다. 즉, 각각의 노드가 데이터와 다음 노드를 가리키는 포인터를 가지고 한 줄로 연결되어..

자료구조 2023.11.11

[자료구조] 복잡도

💡 본 글은 면접을 위한 CS 전공지식 노트 도서를 참고하여 정리하였습니다. intro - 자료구조와 알고리즘 자료구조 사전적 의미의 자료구조는 대량의 데이터를 효율적으로 접근 · 관리할 수 있는 데이터의 구조를 뜻한다. 쉽게 말해, 데이터를 담는 그릇(Data Container) 이라고 할 수 있다. 대부분의 자료구조는 특정 상황의 문제를 해결하는 데에 특화되어 있다. 따라서, 많은 자료구조를 알아두면 문제를 빠르고 정확하게 해결할 수 있다. 알고리즘 알고리즘이란 어떤 문제를 풀거나 계산하기 위한 일련의 유한한 절차이다. 📌 입력한 값이 자료구조에 저장되고, 자료구조에 저장된 값에 연산을 적용하여 원하는 출력을 계산하는 절차가 알고리즘이다. 5.1 복잡도 알고리즘의 성능을 분석할 때 복잡도를 사용한다...

자료구조 2023.10.22

[파이썬] 딕셔너리와 리스트

딕셔너리 자료형을 자주 사용하지 않아서 늘 잊어버린다. 이번 기회에 확실하게 정리하고 넘어가야지,, 리스트 리스트는 변할 수 있는 데이터들을 나란히 묶어주는 자료형이다. 대괄호로 표현한다. 딕셔너리 딕셔너리는 대응이 되는 데이터들을 묶어주는 자료형이다. 중괄호로 표현한다. 이름처럼 마치 사전처럼 대응이 된다. key를 통해 value를 얻는다. key는 중복될 수 없고, 변경할 수 없다. 사용법 a = {1: 'apple'} a[2] = 'banana' print(a) # 출력 : {1: 'apple', 2: 'banana'} ✏️ 파이썬에서는 집합과 딕셔너리가 리스트보다 빠르다. 이는 집합 자료형과 딕셔너리가 해시 테이블을 활용하기 때문이다. 즉, 단어를 숫자로 mapping하고 이 숫자를 인덱스처럼 ..

Python 2023.09.14

[파이썬] 한 줄에 값 여러개 입력 받기

백준 문제를 풀다 보면 한 줄에 2개의 정수를 입력 받아야 하는 문제가 종종 등장한다. 그런 문제를 만날 때마다 매번 기억이 나지 않아 찾아보게 되어서 이번 기회에 정리한다. 한 줄에 값 2개 입력 받기 a, b = input().split() 한 줄에 정수 2개 입력 받기 a, b = map(input().split()) 어떤 문자를 기준으로 분리하여 입력 받기 쉼표를 기준으로 분리하여 입력받을 수도 있다. a, b = input().split(',') 참고 split 함수 map 함수

Python 2023.09.10