브라우저의 구조와 웹 스토리지
·
Computer Science/Web Development
웹 개발을 하다 보면 “브라우저가 내부적으로 어떻게 동작하는가?” 또는 “데이터는 어디에 저장되는가?” 같은 궁금증이 생긴다. 이번 글에서는 브라우저의 주요 구조와, 클라이언트 측 데이터 저장소인 LocalStorage와 SessionStorage의 차이를 정리해본다. 1. 브라우저의 주요 구조브라우저는 크게 7가지 핵심 구성 요소로 이루어져 있다.사용자 인터페이스 (User Interface) - 화면에 페이지를 표시하는 영역을 제외한 나머지 부분이다. 주소창, 뒤로가기/앞으로가기 버튼, 북마크, 새로고침 등을 포함한다.브라우저 엔진 (Browser Engine) - 사용자 인터페이스와 렌더링 엔진 사이에서 명령을 중재하고 흐름을 제어한다.렌더링 엔진 (Rendering Engine) - HTML, C..
45. Jump Game II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 45풀이 날짜: 2025/10/15 1. 문제 이해입력: [2,3,1,1,4]출력: 2설명: 0 → 1 → 4 로 2번 점프배열의 각 원소는 해당 인덱스에서 최대 점프할 수 있는 거리를 의미한다.배열의 시작점(0)에서 출발해 마지막 인덱스에 도달하기 위한 최소 점프 횟수를 구하는 문제다. 2. 접근 방식 — Greedy (탐욕적 접근)이 문제는 모든 경로를 계산할 필요 없이, “한 번의 점프 내에서 도달할 수 있는 최대 범위”를 이용해 해결할 수 있다.탐욕적으로 생각하면, “현재 위치에서 한 번 점프할 때, 다음 점프의 최대 도달 가능 범위를 최대로 넓히는 선택” 만 반복하면 최소 점프 횟수를 구할 수 있다. 이를 위해 다음 세 가지 변수를 사용한다:변..
55. Jump Game
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 55풀이 날짜: 2025/10/15 1. 문제 이해각 인덱스의 값은 그 위치에서 최대 몇 칸까지 점프할 수 있는지를 의미한다.배열의 시작점에서 출발해 마지막 인덱스까지 도달 가능한지 여부를 true 또는 false로 반환하는 문제다. 예시:입력: [2,3,1,1,4]출력: true // 0→1→4 로 이동 가능입력: [3,2,1,0,4]출력: false // 인덱스 3에서 멈춤 2. 접근 방식 — Greedy (탐욕적 선택)이 문제는 모든 가능한 경로를 탐색할 필요가 없다. 중요한 건 “지금 위치에서 갈 수 있는 가장 먼 거리”가 어디인지뿐이다. 즉, 매 순간 현재까지 내가 도달할 수 있는 가장 멀리 있는 지점이 어디인가만 추적하면 된다. 이 접..
122. Best Time to Buy and Sell Stock II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 122풀이 날짜: 2025/10/15 1. 문제 이해여러 날 동안의 주식 가격이 주어졌을 때, 여러 번의 거래(사고팔기)를 통해 얻을 수 있는 최대 이익을 구하는 문제다.단, 동시에 여러 주식을 보유할 수 없고, 하루에 사고 그다음 날 파는 식으로 거래해야 한다. 즉, 가격이 오르면 그 차익을 모두 더하고, 가격이 떨어지면 아무 행동도 하지 않는 방식으로 최대 이익을 계산한다. 2. 풀이 아이디어이 문제의 핵심은 “모든 상승 구간의 이익을 더하는 것”이다. 가격이 오를 때마다 팔았다가 다시 사는 것이 전체적으로 봤을 때 최대 이익을 보장한다.만약 가격이 계속 오르는 경우, 예를 들어 [1,2,3,4] 라면, 한 번만 거래하면: 4 - 1 = 3여러 번 ..
80. Remove Duplicates from Sorted Array II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 80풀이 날짜: 2025/10/15 1. 문제 이해정렬된 배열 nums가 주어졌을 때, 중복된 원소가 최대 2번까지만 나타나도록 배열을 수정해야 한다.추가 배열을 사용하지 않고 제자리(in-place) 에서 해결해야 한다.즉, 각 원소는 최대 두 번까지만 남길 수 있고, 그 이후의 중복은 제거해야 한다. 2. 접근 방식이 문제는 투 포인터(Two Pointers) 를 활용하는 전형적인 배열 조작 문제이다.LeetCode 26번 문제(“Remove Duplicates from Sorted Array”)의 확장 버전이라고 볼 수 있다. 핵심 아이디어k 포인터를 이용해 “결과 배열의 길이”를 관리한다.현재 원소 nums[i] 가 결과 배열의 두 칸 전(num..
189. Rotate Array
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 189풀이 날짜: 2025/10/15 1. 문제 이해정수 배열 nums가 주어지고, 이를 오른쪽으로 k번 회전시킨 결과를 구하는 문제이다.Input: nums = [1,2,3,4,5,6,7], k = 3Output: [5,6,7,1,2,3,4]오른쪽으로 한 칸 회전할 때마다 마지막 원소가 맨 앞으로 이동한다. 2. 접근 아이디어이 문제는 직관적으로는 k번 반복해서 한 칸씩 이동시키면 되지만, 그 방법은 O(n * k)라서 비효율적이다.대신 배열의 부분 반전(reverse) 을 이용하면, 한 번에 O(n)으로 해결할 수 있다. 핵심 아이디어는 다음과 같다.전체 배열을 뒤집는다 → [1,2,3,4,5,6,7] → [7,6,5,4,3,2,1]앞쪽 k개의 부분..