전체 글
-
[Programmers] Lv.1 키패드 누르기 _JavaScript알고리즘/프로그래머스 2023. 5. 6. 12:54
프로그래머스 Lv1. 키패드 누르기 문제 풀이 🧶 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드..
-
[JavaScript] splice()로 배열의 특정 인덱스 요소 삭제/추가/교체하기JavaScript 2023. 5. 3. 19:01
splice() 로 배열의 특정 인덱스 요소 삭제/교체/추가하기 splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다. 🍊 splice() 기본 구문 array.splice(시작 인덱스, 삭제할 요소 개수, 추가할 요소, ••• ) 매개변수 📍 시작 인덱스 배열의 변경을 시작할 인덱스입니다. 음수인 경우 배열의 끝에서부터 요소를 세어나갑니다(원점 -1, 즉 -n이면 요소 끝의 n번째 요소를 가리키며 array.length - n번째 인덱스와 같음). 값의 절대값이 배열의 길이 보다 큰 경우 0으로 설정됩니다. 📍 삭제할 요소 개수 [optional] 배열에서 제거할 요소의 수입니다. 이 요소를 생략하거나 값이 array.length - start보..
-
[Programmers] Lv.1 덧칠하기 _JavaScript알고리즘/프로그래머스 2023. 5. 2. 09:12
[프로그래머스] Lv1. 덧칠하기 _JavaScript 🧶 문제 설명 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다. 벽에 페인트를 칠하는 롤러의 길이는 m미터이고, 롤러로 벽에 ..
-
[Programmers] Lv.1 추억 점수 _JavaScript알고리즘/프로그래머스 2023. 5. 1. 13:14
프로그래머스 Lv1. 추억 점수 문제 풀이 🧶 문제 설명 사진첩이라는 배열을 보고 추억 점수라는 것을 매겨서 배열에 담아 리턴하는 문제입니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. 🧶 입출력 예 name yearning photo re..
-
[OS] 페이징 주소 변환과 페이지 테이블 엔트리운영체제 2023. 4. 29. 11:16
페이징 주소 변환과 페이지 테이블 엔트리 알아보기 지난 시간에 가상 메모리 관리를 위한 페이징에 대해서 공부했습니다. 페이징에 대해서 알아보려면 아래 포스팅을 참고하시면 됩니다. 페이징으로 가상 메모리 관리하기, 페이지 테이블, TLB 오늘은 페이징에서 주소 변환하는 방법과 페이지 테이블 엔트리라는 것을 공부해 볼겁니당. 🧐 🍊 페이징에서의 주소 변환페이징 시스템에서 모든 논리주소는 기본적으로 페이지 번호 page number와 변위 offset으로 이루어져 있습니다. 예를 들어, 32비트 주소인 경우 N비트가 페이지 번호라면 32-N비트는 변위로 이루어진 것이죠. 여기서 변위는 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보입니다. 즉, 논리 주소 는 페이지 테이블을 ..
-
[OS] 페이징으로 가상 메모리 관리하기, 페이지 테이블, TLB운영체제 2023. 4. 23. 09:01
페이징으로 가상 메모리 관리하기 프로세스를 메모리에 연속적으로 할당하는 방식의 문제점 두 가지 1. 외부 단편화 2. 메모리보다 큰 프로그램은 적재할 수 없음 첫 번째는 이전 포스팅에서 다룬 외부 단편화 문제입니다. 두 번째는 4GB 메모리가 설치된 컴퓨터로는 4GB 이상의 프로그램을 실행할 수 없다는 문제입니다. 이러한 문제들은 가상 메모리(virtual memory)라는 것을 이용하면 해결할 수 있습니다. 오늘은 이 가상 메모리 관리 기법으로 대표적인 페이징에 대해서 알아볼게요. 🧐 🍊 페이징이란 메모리와 프로세스를 일정한 단위로 잘라서 적재하는 방식을 말합니다. 아래 그림에서 프로세스B와 같이 불연속적으로도 적재가 가능하기 때문에 외부 단편화는 발생하지 않습니다. 페이징은 프로세스의 논리 주소 공간..
-
[OS] 스와핑과 연속 메모리 할당, 외부 단편화운영체제 2023. 4. 16. 11:08
스와핑과 연속 메모리 할당, 외부 단편화를 알아보자 운영체제의 가장 핵심적인 역할은 프로세스 관리와 메모리 관리입니다. 오늘은 그 중 하나인 메모리 관리에 대해서 공부해 볼겁니당.🧐 이번 포스팅에서는 기본적인 메모리 관리 기법, 스와핑과 메모리에 프로세스를 할당하는 방식, 그리고 연속 메모리 할당의 부작용인 외부 단편화를 공부해봅시당. 🍊 연속 메모리 할당 방식 프로세스들이 메모리 내에 배치될 때 연속적으로 배치되는 것을 연속 메모리 할당이라고 합니다. 모든 프로세스들이 그 크기만큼 메모리 주소를 할당받아 연속적으로 배치되는 것입니다. 🍊 스와핑이란? 스와핑이란, 메모리에서 현재 사용되지 않는 프로세스가 있을 경우 해당 프로세스의 메모리를 임시로 보조 기억 장치로 옮겨두는 것을 말합니다. 운영체제는 이와..
-
[Linux] 멀티 스레드와 싱글 스레드 성능 비교하기 _pthreadLinux 2023. 4. 14. 16:33
pthread를 이용해서 멀티 스레드와 싱글 스레드 성능 비교하기 이번 운영체제 과제는 멀티 스레드가 싱글 스레드보다 빠르게 작업 수행이 가능하다는 것을 증명하는 코드를 구현하는 거였어요. 🤔 아래는 과제의 본문입니다. 교수님께서 부가적으로 말씀하신게 sleep()은 쓰지 말라고 하시더군요 🍊 pthread와 관련된 함수 📍 pthread_craete() pthread_create() : 새로운 스레드를 생성하는 함수 #include int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); thread: 새로운 스레드의 식별자를 저장할 변수의 포인터입니다. pthr..