분류 전체보기(196)
-
컴퓨터 구조의 큰 그림
컴퓨터의 구조와 핵심 부품의 간단한 역할에 대해서 살펴보자. 세부적인 내용은 후에 더 자세히 기록하자. 컴퓨터 구조 컴퓨터 구조는 컴퓨터가 이해하는 정보와 네 가지 핵심 부품으로 이루어져있다. 컴퓨터가 이해하는 정보는 데이터와 명령어이고 모두 0과 1로 표현되어있다. 컴퓨터의 네 가지 핵심 부품으로는 CPU, 메모리, 보조기억장치, 입출력장치가 있다. 컴퓨터 핵심 부품 메모리 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야한다. 그리고 메모리에 저장된 값의 위치는 주소를 통해 알 수 있다. 즉, 메모리에 데이터가 저장되어 있으면 저장된 메모리의 주소를 통해 데이터를 읽어올 수 있다. CPU 메모리에 저장된 명령어를 읽고 ..
2024.04.11 -
Level 2️⃣ - 연속된 부분수열의 합(Feat. 투포인터)
투포인터 투 포인터와 관련된 기본 문제는 아래 링크에 정리해두었다. 문제에서도 언급되지만 정렬이 되어있다는 조건을 잘 확인하자. https://ukgi-dev.tistory.com/16 투 포인터 알고리즘 - 개념정리 투포인터 알고리즘 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 목표값을 구하는 테크닉이다. 흔히 2,3,4,5,6,7번 학생을 지목해야 할 때 간단하게 2번부터 7번까지의 학 ukgi-dev.tistory.com 🚀문제 접근 무식하게 접근하는 방법이 있다. 물론 처음에는 이 방법도 생각나지 않았지만... 2 3 6 5 1 2가 맨 앞에 올 때 연속 부분수열, 3이 맨 앞에 올 때 연속 부분수열, 6이 맨 앞에 올 때 연속 부분수열 ... 이렇게 이중 for문을 돌려서..
2024.04.10 -
Level 2️⃣ - 삼각 달팽이
https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀문제 접근 첫 행부터 마지막 행까지 모두 순서대로 합친 배열을 반환하기 위해서 이차원 배열로 표현했다. 값은 배열에 요소를 채워나갈때마다 1씩 더해지고, 값이 들어가야되는 위치는 처음에는 y축에서 양의 방향으로 n번 반복하면서 1씩 커지게 된다. [0, 0] ➡ [1, 0] ➡ [2, 0] ➡ [3, 0], n이 4일때 총 4번 반복하게 된다. 그리고 x축에서 양의 방향으로 n-1번 반복하면서 ..
2024.04.10 -
Level 2️⃣ - 두 큐 합 같게 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀접근 방법 직접 Map 자료형을 이용해 큐를 구현해서 해결하려했지만 시간초과가 계속 나왔다. 요소를 자료형에 저장하는 것이 아니라 포인터로 해결하는 방법이 더 효율적인 방법이었다. 오답 코드 (시간초과) class Queue { constructor() { this.storage = new Map(); this.front = 0; this.rear = 0; } size() { return th..
2024.04.09 -
Level 2️⃣ - 프렌즈 4블록
https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀접근 방법 4방향 탐색을 해서 같은 요소들이 2*2 크기에 있다면 해당 좌표를 저장하고 0으로 채운다. 그리고 블록을 아래로 떨궈 빈 공간을 메꾸면 되는데 이 부분의 구현이 가장 힘들었다. function solve(i, j, board){ const pick = board[i][j]; if(pick && pick === board[i][j+1] && pick === board[i+1][j] &..
2024.04.08 -
Level 2️⃣ - 2개 이하로 다른 비트
https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀첫번째 접근 방법 아주 직관적으로 해결하고자 했다. 우선 x를 toString을 이용해 이진법으로 변경한다. 그리고 for문을 돌면서 x보다 큰 수를 이진법으로 변경한 후에 각각의 자리가 맞는지를 일일히 확인한다. 체크 변수를 만들어 자리가 맞으면 체크 변수를 하나씩 늘려준다. 만일 체크 변수의 값이 3이 넘어가면 다음 숫자로 넘어간다. function solution(numbers) { let..
2024.04.08