문제 문자열 s가 주어진다. s가 pangram 인지 판단하는 함수, solution을 완성하라. pangram이란 모든 알파벳이 사용된 문장을 말한다. 입력 형식 s는 길이가 1이상 1,000 이하인 문자열이다. s는 소문자 알파벳과 공백('')으로만 구성된다. 출력 형식 문자열이 pangram인지 구한다. 문자열이 pangram이면 true, 그렇지 않으면 false를 출력한다. 내 풀이 function solution(s) { let map = new Map(); const alphabet = Array.from({length : 26}, (_,i) => String.fromCharCode(97+i)); let strSet = [...new Set(s)]; strSet.forEach((v,i) =>..
문제 문자열 S 는 이진수로 표현된 양의 정수이다. 해당 정수에 대해서 아래의 연산을 수행한다. - 만약 숫자가 짝수인 경우 해당 값을 2로 나눈다. - 만약 숫자가 홀수인 경우 1을 뺀다. 연산의 결과가 0이 될 때까지 위 동작을 반복해서 수행했을 때, 수행된 연산의 횟수를 구하는 프로그램을 구현하라. 입력 형식 이진수로 이루어진 문자열 S 출력 형식 결과가 0이 될 때까지 필요한 연산 횟수를 정수로 반환 제약 사항 0 < S.length
문제 숫자로 이루어진 문자열 s가 있습니다. 이 문자열에서 가장 많이 등장하는 0 ~ 9 사이의 숫자를 출력하는 프로그램을 구현하세요. 단, 가장 많이 등장하는 수가 여러 개라면, 그 중 가장 작은 수를 반환하세요. 입력 형식 s 는 숫자로 이루어진 문자열 출력 형식 가장 많이 등장하는 수를 정수로 반환 제약 사항 0 { let count = [...s].reduce((a,c) => c === v ? a += 1 : a, 0); if(max < count) {max = count; result = +v} else if (max === count) { result = Math.min(r..
padStart() padStart 함수는 문자열의 앞부분을 특정 길이로 채우는 역할을 한다. 기본 문법은 아래와 같다. str.padStart(targetLength[, padString]) str : 원본 문자열 targetLength : 목표로 하는 문자열 길이를 나타낸다. 이 길이에 맞게 문자열이 채워질 수 있다. padString (옵션) : 필요한 경우 채우기에 사용할 문자열이다. 기본값은 공백 문자열(' ')이다. 아래는 예시 코드이다. const str = "123"; const paddedStr1 = str.padStart(7, "0"); console.log(paddedStr1); // 출력 : "0000123" const paddedStr2 = str.padStart(10); cons..
[운영체제] 페이징이란?(1) / 페이지 테이블, 페이징 동작 순서 페이징(Paging) 프로세스는 생성되면 실제 필요한 데이터를 일정한 특정 단위의 메모리로 조각낸다. 이 조각낸 메모리들은 모두 크기가 같으며, 조각낸 것들을 묶어서 물리 메모리에 넣고 필요할 jerryjerryjerry.tistory.com 이전 포스팅 글의 내용에서 다뤘던 페이징이 일어나는 순서에 대해서 다시 요약해보겠다. 페이징 동작 순서 큰 틀로 요약 ① CPU가 특정 프로세스를 실행시키기 위해 가상 주소를 운영체제에게 요청한다. ② 이 가상 주소를 받아서 처리하는 것은 MMU이다. MMU가 맨 처음 CPU에 있는 CR3 레지스터에 접근하여, 메모리에 있는 처리할 프로세서의 페이지 테이블의 주소를 가져온다. MMU는 특정 프로세스..
페이징(Paging) 프로세스는 생성되면 실제 필요한 데이터를 일정한 특정 단위의 메모리로 조각낸다. 이 조각낸 메모리들은 모두 크기가 같으며, 조각낸 것들을 묶어서 물리 메모리에 넣고 필요할 때 조회하며, 필요없어지면 다시 프로세스에게 반환한다. 프로세스는 작업을 처리하기 위해 가상 주소를 CPU에게 전달하며, CPU는 받은 가상주소를 물리주소로 변환하고 데이터를 가져와야 한다. 이때, 특정 데이터가 들어있는 데이터 조각 묶음을 계산하는 알고리즘을 페이징이라고 한다. 각 페이지들의 크기는 같으며, 생성된 순서대로 순번을 차례대로 부여받는다. 페이지 테이블(Page Table) 페이지 테이블이란 물리 주소(physical address)의 페이지를 실제 물리 주소 정보와 매핑한 표를 담고 있는 테이블이다..
가상 메모리 등장 배경 컴퓨터는 프로세스 1개 또는 여러 개의 프로세스를 처리할 수 있다. 그리고 프로세스는 생성되면 작업을 처리하기 위해 메모리를 할당 받아야 한다. 우리의 컴퓨터는 여러 프로세스들을 처리할 수 있어야하는데, 작업을 처리하기 위해 존재하는 컴퓨터의 실제 메모리 자원은 한정적이다. 즉, 컴퓨터의 실제 메모리 공간보다 프로세스가 처리해야할 메모리 공간이 더 많을 수 있다는 말이다. 그렇다면 여러 개의 프로세스를 처리하거나, 메모리가 큰 프로세스를 처리해야할 때는 실행하지 못하는 걸까? 이 부분을 해결하기 위해 가상 메모리가 등장하게 되었다. 가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 프로세스들을 동시에 실행시킬 수 있도록, 컴퓨터의 메모리가 무한하다고 느끼게하는 방법이다. 컴퓨..
2진수 → 10진수 변환 parseInt() 함수는 문자열을 정수로 변환하는 내장 함수로, 두 개의 매개변수를 받을 수 있다. parseInt(String, Number) 1. 문자열(String) : 변환하고자 하는 숫자의 문자열 2. 진수(Number) / (optional) : 문자열이 포현된 진수를 나타내는 숫자. 선택적으로 사용된다. 만약 진수를 지정하지 않으면 문자열이 기본적으로 10진수로 간주된다. const binary = "10101"; const result = parseInt(binary, 2); console.log(result); // 출력 : 21 const binary = "1120"; const result = parseInt(binary, 3); console.log(res..
스레드(Thread) 운영체제에서 스레드는 프로세스 내부에서 실행되는 작은 작업 단위이다. 스레드는 프로세스의 실행 흐름을 구성하는 단위로, 하나의 프로세스는 내부에 여러개의 스레드가 포함될 수 있다. 스레드를 설명하기 전에 프로세스와의 차이점을 알기위해, 프로세스에 대해서 간략하게 설명한다. 프로세스는 독립된 객체로서 생성되면 각각의 메모리 자원을 할당 받고, 서로에게 접근이 불가능하다. 프로세스 특성상 서로에게 접근이 불가능하기에, 여러개의 프로세스를 처리하기 위해서 서로의 상태 자원을 공유하려면 IPC라는 커뮤니케이션 기법이 필요하다. IPC는 커널의 공유 메모리를 활용하여 프로세스들간의 데이터 상태 정보를 주고 받는다. 스레드의 특징 특징 ① 프로세스들이 서로의 데이터에 접근하는것이 직접적으로 불..