전체 글 28

해시 테이블 (Hash Table)

해시 테이블은 key와 value를 가진 자료구조이다. key를 바탕으로 빠르게 값을 찾아낼 수 있는 장점이 있다. 해시 테이블의 고유한 인덱스는 해싱 함수를 통해서 결정되는데 해싱되는 과정을 통해서 인덱스들이 최대한 중복되지 않도록 만들 수 있다. 해시 알고리즘은 하나의 정답이 존재하지는 않는다. 일반적인 방식보다 더 효율적인 방법이 존재할 수 있지만 우선 대표적인 해시 알고리즘에 대해서 알아보겠다. function Hash(key) { const hash = Array.from(key).reduce( (hashAcc, keySymbol) => hashAcc + keySymbol.charCodeAt(0), 0 ); return hash; } key로 들어온 문자열의 모든 문자들의 ASCII 코드 값을 ..

CS 2022.10.26

Operating System : Concepts - 프로세스 (Process) (1)

https://github.com/BOOOO0/linux-operating-system GitHub - BOOOO0/linux-operating-system: 리눅스 명령어, 이론과 운영체제 실습리눅스 명령어, 이론과 운영체제 실습. Contribute to BOOOO0/linux-operating-system development by creating an account on GitHub.github.com깃허브에 더 많은 내용이 있습니다. 프로세스 (The Process)프로세스는 프로그램이 실행되어서 메모리에 로드된 것 그러니까 프로그램이 실행 중에 있는 것을 말한다.  프로세스가 실행되기 위해서 필요한 자원들은CPU timeMemoryFileI/O Devices가 있다.  프로세스 상태 (Proc..

Operating System 2022.10.22

Operating System : Concepts - 가상 메모리 (Virtual Memory) (3)

https://github.com/BOOOO0/linux-operating-system GitHub - BOOOO0/linux-operating-system: 리눅스 명령어, 이론과 운영체제 실습리눅스 명령어, 이론과 운영체제 실습. Contribute to BOOOO0/linux-operating-system development by creating an account on GitHub.github.com깃허브에 더 많은 내용이 있습니다. 프레임의 할당 (Allocation of Frames)프레임의 할당은 여러 개의  프로세스들에게 한정된 프레임을 어떻게 얼만큼씩 할당해줄지에 대한 고찰이다.  그리고 할당의 방식으로는 우선 각 프로세스에 얼만큼을 줄 것이냐를 결정해야 하는데 균등 할당 (Equal ..

Operating System 2022.10.11

Operating System : Concepts - 가상 메모리 (Virtual Memory) (2)

https://github.com/BOOOO0/linux-operating-system GitHub - BOOOO0/linux-operating-system: 리눅스 명령어, 이론과 운영체제 실습리눅스 명령어, 이론과 운영체제 실습. Contribute to BOOOO0/linux-operating-system development by creating an account on GitHub.github.com깃허브에 더 많은 내용이 있습니다. 페이지 교체 (Page Replacement)페이지 교체는 메모리에 로드되어야 할 페이지의 수가 현재 free-frame의 수보다 많을 경우에 필요하다.     물리 메모리에 남은 프레임이 없는 상태에서 새로운 페이지를 로드시키고 싶다면 하나의 프레임을 선정해서 p..

Operating System 2022.10.06

2019 KAKAO BLIND RECRUITMENT - 실패율

https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 스테이지의 수 N이 주어지고 사용자들의 스테이지 현황 배열 stages가 주어진다. 현재 스테이지를 클리어하지 못한 사용자들의 수가 가장 많은 스테이지가 실패율이 가장 높은 스테이지이다. 각 스테이지의 실패율을 저장한 다음 실패율이 높은 순으로 정렬해서 출력하면 되는 문제이다. 문제 풀이 생각했던 로직은 다음과 같다. 길이가 N인 배열을 만들어 실패율을 저장한다. 실패율의 계산은? - ..

2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어

https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 문자로 주어진 숫자를 해당 숫자로 바꿔서 출력하는 문제이다. "one" 이라면 1로 바꾸는 것이다. key와 value를 가진 collection을 사용한다면 쉽게 풀 수 있는 문제이다. 문제 풀이 이전에 파이썬으로 풀었던 풀이는 다음과 같다. def solution(s): answer = "" num_str = {"zero" : "0","one": "1"..

2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도

https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해석 길이가 n인 10진수를 원소로 갖는 배열 2개가 주어지고 10진수를 2진수로 만들어 부호화 시키는 문제이다. 멀티미디어 과목을 수강하면서 부호화 압축 알고리즘을 배워서 관심이 갔던 문제이다. 문제 풀이 우선 처음 떠올렸던 로직은 2진수로 변환시킨다. n만큼의 비트를 가지는 2진수로 만든다. (길이가 n인 문자열로 만든다) 2개의 배열을 각각 board로 만든다. 두개의 board를 비교..

웹의 동작 원리와 인터넷 주소 체계

웹의 동작 원리 ①② 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함. ③ 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색함. ④ DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함. ⑤⑥ 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성함.이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨. ⑦ 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨. ⑧ 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색..

CS 2022.09.16

Operating System : Concepts - 가상 메모리(Virtual Memory) (1)

https://github.com/BOOOO0/linux-operating-system GitHub - BOOOO0/linux-operating-system: 리눅스 명령어, 이론과 운영체제 실습리눅스 명령어, 이론과 운영체제 실습. Contribute to BOOOO0/linux-operating-system development by creating an account on GitHub.github.com깃허브에 더 많은 내용이 있습니다. 가상 메모리 (Virtual Memory)한 프로세스를 실행시키려할 때 메모리에 프로그램 전체를 적재시키지 않아도, 혹은 실제 물리 메모리보다 프로그램의 크기가 더 커도 실행할 수 있게 해주는 기술이다. 주 메모리 자체를 굉장히 큰 가상의 저장공간이라고 생각하면 논..

Operating System 2022.08.06

Operating System : Concepts - 주 메모리(Main Memory) (4)

https://github.com/BOOOO0/linux-operating-system GitHub - BOOOO0/linux-operating-system: 리눅스 명령어, 이론과 운영체제 실습리눅스 명령어, 이론과 운영체제 실습. Contribute to BOOOO0/linux-operating-system development by creating an account on GitHub.github.com깃허브에 더 많은 내용이 있습니다. 스와핑 (Swapping)모든 프로세스의 논리적 주소와 물리적 주소를 분리시켰을때 프로그램의 크기가 실제 물리 메모리보다 훨씬 큰 경우에도 스와핑을 이용하면 동시에 실행하는 것이 가능하여 다중 프로그래밍의 정도를 증가시킨다. 실행중인 프로세스의 명령어와 데이터는 메..

Operating System 2022.07.19