본문 바로가기

전체 글181

롤케이크 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/132265 풀이 topping 길이 1,000,000 => O( nlogn ) slice의 시간복잡도는 O(n) => 매번 잘라서 형과 동생의 토핑갯수를 구할 수 없다 처음에 형한테 모든 토핑을 준다 그 후 토핑을 순회하며 동생이 하나씩 가져가고 형과 동생의 토핑갯수를 비교한다. function solution(topping) { var answer = 0; const old = {}; // 토핑 종류별 갯수 const young = {}; let oldCount = 0; // 토핑 종류 갯수 let youngCount = 0; topping.forEach(t => { if (!old[t]) { ol.. 2023. 12. 7.
[프로그래머스 LV2] 마법의 엘리베이터 JS https://school.programmers.co.kr/learn/courses/30/lessons/148653 문제요점 절대값이 10^c인 버튼 누르면 현재 층 수 + 버튼 으로 이동 0보다 작으면 움직이지 않음 버튼 한번에 마법돌 1개 0층으로 가는데 필요한 최소버튼 생각 큰 수 => 규칙 => 자릿수마다 문제풀이 맨 밑의 자릿수부터 하나씩 제거해가며 층이 0이 될 때까지 순회하는데 각 자릿수마다 엘리베이터를 올릴지, 내릴지를 판단해야하는데 가능한 케이스는 두가지이다 해당 숫자만큼 버튼을 누르냐 10에서 해당 숫자를 뺀 만큼 누를 것이냐 (단 한 자릿수 위에 올림처리를 해야함) 예를 들어 43의 두가지 케이스는 이렇다 40 + 3 50 - 7 1의 자리부터 확인하면서 5미만이면 내린다 (자릿수 값.. 2023. 12. 7.
캐시 메모리 속도가 빠른 장치와 느린 장치의 속도차이(병목현상)를 해결하는 메모리이다. CPU가 빠른 속도로 데이터를 주고 받을 수 있도록 캐시메모리는 CPU와 인접하게 위치한다. 참조지역성의 원리에 따라 주기억장치나 보조기억장치에서 자주 사용하는 해당 데이터 뿐만 아니라 옆 주소의 데이터를 미리 가져와 임시보관한다. 속도를 향상시키지만, 용량이 적고 비싸다. 참조 지역성의 원리 자주 사용되는 데이터에 대한 판단 기준이다. 시간 지역성 for나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시후 또 참조될 가능성이 높음 공간 지역성 A[0], A[1]과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시후 또 사용될 가능성이 높음 CPU안의 캐시메모리 CPU에는 캐시 메모리가 2~.. 2023. 12. 7.
비트마스킹 비트마스킹은 컴퓨터 과학에서 비트 연산자를 사용하여 특정 위치의 비트를 설정하거나 조작하는 기술이다 데이터를 압축하는데에 유용하며 효율적으로 데이터를 다룰 수 있다. 비트마스크의 주요 연산 비트 설정 OR(|) 연산자를 사용하여 특정 위치의 비트를 1로 설정한다. let num = 5; // 5의 이진 표현은 '101' let mask = 1 2023. 12. 6.
[프로그래머스] 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538# 문제요점 세 연산의 모든 조합 숫자가 y초과하면 더이상 연산할 필요없다 첫번째 풀이 bfs (성공) 최소 연산 횟수 => bfs 를 생각했다. y가 x로 변환하는 방법 x미만의 결과가 나오는 연산은 고려할 필요없다 최소연산 횟수 만에 찾기위해 num /3, num/2, num-n 순으로 찾았다. function solution(x, y, n) { const queue = [{num: y, count: 0}]; while(queue.length) { const {num, count} = queue.shift(); // shift는 O(n); // x가 되는 연산을 찾음 if (num ===.. 2023. 12. 6.
중앙처리장치(CPU) 작동 원리 CPU는 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분. '인간의 두뇌'에 해당 크게 연산장치, 제어장치, 레지스터 3가지로 구성됨 연산 장치 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보냄 산술연산과 논리연산 수행 (따라서 산술논리연산장치라고도 불림) 제어 장치 명령어를 순서대로 실행할 수 있도록 제어하는 장치 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보냄 또한 이들 장치가 보낸 신호를 받아, 다음에 수행할 동작을 결정함 레지스터 고속 기억장치임 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장 용도에 따라 범용 레지스터와 특수목적 레지스터로 구분됨 중앙처리.. 2023. 12. 6.