차곡차곡 성 쌓기
article thumbnail
컴퓨터 구조 #3 - 0과 1로 문자를 표현하는 방법
CS/컴퓨터 구조 2024. 1. 24. 23:57

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다. 문자 집합과 인코딩 컴퓨터 어떻게 문자를 이해하는지 알기 위해선 다음 3가지 개념을 알고 있어야 한다. 문자 집합, 인코딩, 디코딩 ▶︎ 문자 집합 컴퓨터가 이해할 수 있는 문자의 모음 ex ) 아스키 코드, 유니 코드 등 ▶︎ 인코딩 코드화 하는 과정 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 ▶︎ 디코딩 코드를 해석하는 과정 0과 1로 표현된 문자 코드를 문자로 변환하는 과정 아스키 코드 초창기 문자 집합 중 하나 알파벳, 아리비아 숫자, 일부 특수 문자 및 제어 문자 표현 7비트로 하나의 문자를 표현 => 128개의 문자 표현 1비트는 오류 검출을 위해 사용되는 패리티 비트 But 한국어, 중국어..

article thumbnail
컴퓨터 구조 #2 - 0과 1로 숫자를 표현하는 방법
CS/컴퓨터 구조 2024. 1. 24. 13:40

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다 정보단위와 워드 ▶︎ 정보단위 비트 : 0과 1을 표현. 가장 작은 정보 단위 1byte 8bit 1kB 1000Byte 1MB 1000kB 1GB 1000MB 1TB 1000GB c.f) 1024개씩 묶은 단위는 따로 있다. kiB, MiB, GiB, ・・・ ▶︎ 워드(word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 2 진수 ▶︎ 표기방법 (2) 첨자를 붙이기 앞에 ob 붙이기 ▶︎ 음수 표현하기 : 2의 보수(가장 대표적 방법) 쉬운 방법 : 모든 0과 1을 뒤집고, 1더한 값 ▶︎ 음수와 양수를 어떻게 구별? 예를 들어 01₂은 -11이기도 하면서 1로 표현 됨 → 보기에는 구별 못한다. 하지만..

article thumbnail
컴퓨터 구조 #1 - 대략적인 컴퓨터 구성(CPU, 메모리, 레지스터)
CS/컴퓨터 구조 2024. 1. 24. 01:47

본 카테고리는 "혼자 공부하는 컴퓨터구조 + 운영체제" 책과 강의를 기반으로 작성하였습니다 컴퓨터가 이해하는 정보 ▶︎ 데이터 숫자, 문자, 이미지, 동영상 같은 정적인 정보 컴퓨터와 주고 받는/ 내부에 저장된 정보를 통칭하기도 함 ▶︎ 명령어 컴퓨터는 명령어를 처리하는 기계이다. 명령어는 컴퓨터를 실질적으로 움직이는 정보 데이터는 명령을 위한 정보일 뿐이다. ex) 1과 2를 더하라 명령어 : 더하라 데이터 : 1, 2 컴퓨터의 4가지 핵심 부품 CPU 메모리 보조기억 장치 입축력 장치 4개의 장치를 연결해주고 합치기 위해 메인 보드가 존재한다. 각 핵심 부품에 대해 알아보자. ▶︎ 메모리 메인 메모리(주기억 장치)를 의미하며 RAM이다 -> 휘발성 장치 현재 실행되는 프로그램(프로세스)의 명령어와 데..

article thumbnail
HTTP 웹 기본 지식 #1 - 인터넷 통신
CS/인터넷 2024. 1. 21. 01:27

본 포스팅은 인프런의 김영한님의 `모든 개발자를 위한 HTTP 기본 웹 지식` 강의를 수강하고 정리한 내용입니다. 인터넷 통신 인터넷은 어떻게 통신할까? 인터넷을 거치면서 복잡한 노드들을 통과해야 함 -> IP (인터넷 프로토콜) 도입 IP (인터넷 프로토콜) 통신을 위해 각 서버에게 IP 주소를 부여함. 클라이언트도 IP 주소를 부여 받아야 하고, 서버도 IP주소를 부여받아야 함. IP (인터넷 프로토콜) 역할 지정한 IP주소에 데이터 전달 패킷이라는 통신 단위로 전달 IP 패킷 정보 출발지 IP, 목적지 IP, 기타... 전달할 정보에 IP 패킷을 감싸서 전달, 전달.. IP 프로토콜의 한계 1. 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 됨 중간 서버가 갑자기 꺼지면 패킷..

article thumbnail
Arrays.sort()와 Collections.sort() 차이
CS/자바 2024. 1. 10. 14:37

Arrays.sort() 배열을 정렬하는데 사용 ('int [] ', 'String []' 등) 기본 데이터 타입 배열, 객체 배열 모두에 사용 가능 주어진 배열 직접 변경 Collections.sort() 컬렉션을 정렬하는 데 사용('List', 'Set' 등) 주어진 컬렉션을 직접 변경 둘 다 Comparable 인터페이스나 Comparator 인터페이스 중 하나를 구현하고 있어야 한다. 이 둘의 차이는 무엇일까? 알아본다. Comparable 인터페이스 객체가 자연스러운 순서를 갖도록 하는 것이 목표 객체 자체가 비교 로직을 구현 `compareTo` 메소드 제공해야함 메소드는 현재 객체가 다른 객체보다 작으먄 음수, 같은 0, 크면 양수를 반환해야 함 List people = new ArrayLi..

article thumbnail
[알고리즘] Lower bound와 Upper bound 개념과 구현 - Java
CS/알고리즘 2023. 11. 10. 18:32

1. 서론 이분 탐색 알고리즘 관련 문제를 풀다가 잘 이해가 안되는 부분이 2가지 있었는데 바로 원하는 값과 탐색 값이 같을 때 어디서 처리를 해야할지, 두 번째로 low와 high값 중 어떤 것을 결과로 선택 해야할지이다. 여러 블로그들을 방문하여 내가 고민했던 문제를 어떻게 생각했는지 알아봤는데 설명이 잘 되어있는 블로그에서는 대부분 Lower bound와 Upeer bound 중 하나를 선택해서 구현했다. 그래서 이 두 개념에 대해 알아보고자 한다! 2. Lower bound Lower bound 알고리즘 찾고자 하는 값(크거나 같은)의 시작위치를 알아낸다. 시간 복잡도 : O(logn) 2.1 동작 방식 1. 배열의 중간 값을 가져온다. 2. 중간 값과 검색값을 비교한다. 중간 값이 검색 값보다 ..

Java BFS와 DFS 구현
CS/알고리즘 2023. 9. 17. 00:38

DFS DFS는 깊이 우선 탐색으로, 한 노드에서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식을 말한다. 검색 속도 자체는 BFS에 비해 느리지만 조금 더 간단하다. 스택 혹은 재귀함수를 이용하여 구현한다. class Graph{ private int V; private LinkedList adj[]; Graph(int v){ V = v; adj = new LinkedList[v]; for(int i=0; i

article thumbnail
합병 정렬 (Merge Sort) - Java
CS/알고리즘 2023. 8. 19. 00:36

합병 정렬 개념 리스트를 두 개의 균등한 크기로 분할하고 분할된 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하기를 반복하면서 전체를 정렬한다. 분할 정복 기법 알고리즘 중 하나이다. 분할 정복 기법 (divide and conquer) 문제를 작은 2개의 문제로 분리하고 각 문제를 해결 후, 결과를 모아서 원래의 문제를 해결하는 전략 구체적인 알고리즘 합병 정렬은 다음 3가지 단계를 반복하며 정렬을 한다. 분할(Divide) : 같은 크기의 2개의 부분 배열로 분할한다. 정복(Conquer) : 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 충분히 작아질 때까지 분할을 반복한다. 결합(Combine): 정렬된 부분 배열들을 하나의 배열로 통합한다. 부분 리스트의 크기가 1개가..

article thumbnail
퀵 정렬 (Quick Sort) - Java
CS/알고리즘 2023. 8. 17. 02:42

알고리즘 퀵 정렬은 기준값(pivot)을 선정해 해당 값도가 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 알고리즘이다. 평균적인 시간 복잡도는 O(nlogn)으로 다른 O(nlogn)의 알고리즘 중 가장 빠르다고 평가 된다. 구체적인 내용 기준점을 정하고 기준점을 기준으로 작은 것은 왼쪽으로 큰 것은 오른쪽으로 이동 시키며 정렬을 진행 한다. 이때 기준점이 되는 레코드는 한 번 정렬이 완료되면 더 이상 자리가 바뀌지 않는다. partition 함수를 통해 피봇을 기준으로 왼쪽, 오른쪽을 나누게 된다. 최종적으로 피봇의 위치는 low가 higt보다 커지는 순간으로 결정된다. 이렇게 피봇을 기준으로 한 번 정렬된 리스트는 다시 왼쪽, 오르쪽 리스트로 쪼개져 partition 함수를 호출하며 리스..

article thumbnail
삽입 정렬 - Java
CS/알고리즘 2023. 8. 16. 02:56

알고리즘 손 안의 카드 정렬을 하는 것과 유사하다. 기존의 정렬된 카드 사이의 올바른 자리를 찾아 삽입! 왼쪽 리스트에 정렬이 완료된 요소를 1개, 2개 점점 개수를 늘려가면서 정렬이 완료된다. 구체적인 알고리즘 1. 인덱스 1부터 시작한다. 2. 현재 삽입될 요소인 i번째 요소를 key 변수에 복사 3. i-1번째 부터 역순으로 조사 4. j가 0보다 작아지거나 key값보다 정렬된 배열에 있는 값이 크면 5. j번째는 j+1번째로 이동한다. 6. j를 하나 감소한다. 7. j번째 정수가 key보다 작으므로 j+1번째가 key값이 들어갈 위치이다. 코드 // 정렬 - 삽입 정렬 int i,j; for(i= 1; i=0&&num..

728x90