전체 글 98

[React] 리액트란 무엇인가?

1. 컴포넌트 기반 UIReact는 컴포넌트(Component) 단위로 화면을 구성한다.말 그대로 “화면을 이루는 구성 요소”를 하나하나 모듈처럼 나눠서 만드는 방식이다. 예시:Header.js – 상단 메뉴Main.js – 본문Footer.js – 하단 영역이렇게 컴포넌트로 나누면,중복 코드 제거유지보수 편리재사용 가능덕분에 대규모 UI를 체계적으로 관리할 수 있다.2. 선언형 프로그래밍 방식React는 UI를 “선언형(Declarative)” 방식으로 정의한다. 선언형 vs 명령형선언형(React): "무엇을 원하는지"만 명확하게 선언예: “이 버튼을 누르면 이 화면을 보여줘”명령형(JavaScript 등): "어떻게 할 것인지" 일일이 지시예: 버튼 클릭 → DOM 선택 → 속성 수정 → 재랜더..

Node.js/React 01:38:58

[Node.js] 라이브러리 사용하기

라이브러리란?라이브러리(Library)는 프로그램을 개발할 때 필요한 다양한 기능들을 미리 만들어 모듈화한 것을 의미한다.개발자는 이미 만들어진 라이브러리를 사용함으로써 개발 시간을 절약하고 효율적으로 작업할 수 있다. 예를 들면,날짜 라이브러리 (day.js)수학 라이브러리그래픽 라이브러리등 다양한 기능을 제공하는 라이브러리가 존재한다.라이브러리 설치Node.js의 라이브러리는 주로 npmjs.com 사이트에 등록되어 있다.터미널에서 라이브러리를 설치할 수 있으며, 설치 후 프로젝트 폴더에 여러 변화가 생긴다.npm install dayjspackage.json과 package-lock.jsonpackage.json설치한 라이브러리의 정보를 기록하는 파일이다.dependencies 항목에 설치된 라이브..

Node.js 00:32:50

[Node.js] Node.js 모듈 시스템

모듈 시스템이란?Node.js에서 모듈(Module)은 프로그램의 기능을 독립적으로 관리하기 위한 코드의 묶음이다.즉, 모듈 시스템은 코드를 효율적으로 관리하기 위해 코드를 분리하고, 이를 불러와 사용할 수 있도록 지원하는 시스템을 말한다.왜 모듈 시스템이 필요할까?예를 들어 쇼핑몰을 개발한다고 가정해보자.회원 관리 기능장바구니 기능결제 기능이 모든 기능을 하나의 파일에 작성하면 코드가 지나치게 길어지고 복잡해진다.이렇게 되면 버그 수정이나 기능 추가가 어려워지고 생산성도 떨어진다.따라서 기능별로 파일을 분리하여 관리할 필요가 있다.user.jscart.jspayment.js 이렇게 분리된 파일들을 효율적으로 관리하고 재사용하기 위한 것이 바로 모듈 시스템이다.대표적인 자바스크립트 모듈 시스템자바스크립트..

Node.js 00:16:20

[Node.js] Node.js란?

Node.js란 무엇인가?Node.js는 웹 브라우저가 아닌 환경에서도 JavaScript를 실행할 수 있게 해주는 자바스크립트 런타임(Runtime)이다.런타임(Runtime)이란 코드를 실행할 수 있도록 환경을 제공하는 프로그램을 뜻한다. 쉽게 말해, 자바스크립트 코드를 동작시키는 구동 엔진이라고 할 수 있다.왜 Node.js가 필요할까?원래 JavaScript는 웹페이지 내에서 간단한 기능을 만들기 위해 탄생한 언어이다.C나 Java 같은 기존의 언어들과는 다르게 문법이 유연하고 간결해서 개발 생산성이 뛰어나다.이렇게 웹 브라우저 내에서만 사용되던 JavaScript는 점점 더 많은 개발자들이 웹 브라우저 외부에서도 사용하기를 원하면서 변화가 필요해졌다. 그 결과 등장한 것이 바로 Node.js다...

Node.js 2025.05.03

[Programmers/Python] 완전범죄

1. 문제 파악하기모든 물건을 훔쳐야 한다.각 물건은 훔칠 때마다 a/b 두 도둑 중 하나가 흔적을 남긴다.a의 흔적 합이 n 이상이면 a가, b의 흔적이 m이상이면 b가 잡힌다.목표는 "둘 다 잡히지 않으면서" a의 흔적 합을 최소화하는 것각 물건마다 선택(a가 훔칠까, b가 훔칠까)을 해야하고,전체 선택 결과에 대해 두 변수(=a의 흔적, b의 흔적)가 제약(그 중 a의 흔적을 최소화 해야한다=> 전형적인 DP(동적 계획법) 문제 형태2. DP 상태(메모이제이션) 설계dp[k] = 지금까지 b 의 흔적 합이 정확히 k 일 때, a의 흔적 합의 최소값배열 길이는 m (b가 잡히지 않으려면 k 초기값INF = 10**9dp = [INF]*mdp[0] = 0 # b가 0 흔적일 때 a도 0 이제 물건을 하..

[Python] 파이썬으로 입력, 출력, 데이터 세팅하기

알고리즘 문제 사이트마다 입력과 출력 방식이 조금씩 다른데,프로그래머스는 로직만 작성하고 백준에서는 문제에 나와있는대로 입력과 출력까지 작성해야 한다.다양한 문제 풀이 환경에 대비해서 입력과 출력 방법을 알아두면 좋을 것 같다1. 입력 받기입력 값이 큰 경우를 대비해서input() 대신 sys.stdin.readline() 을 사용하는 것이 유리하다📌 기본 입력 처리import sysinput_func = sys.stdin.readlinen = int(input_func()) # 정수 하나 입력 받기arr = list(map(int, input_func().split())) # 한 줄에 여러 정수 입력 받기 sys.stdin.readline()은 개행 문자 (\n)도 같이 입력받기 때문에,strip()..

Python/알고리즘 2025.04.06

[LeetCode/Python] 35. Search Insert Position

35. Search Insert Position[문제]정렬된 정수 배열 nums와 목표 값 target타겟이 배열에 존재하면 인덱스를 반환존재하지 않으면 정렬된 순서를 유지하면서 삽입될 위치를 반환해야 한다.[문제 조건]배열 nums는 오름차순으로 정렬되어 있다.배열의 길이는 0 배열의 원소는 -10^4 타겟 값은 -10^4 시간 복잡도는 O(log n)[코드 1]이진탐색 버전 (시간복잡도 O(log n) )def search_insert(nums, target): left, right = 0, len(nums) - 1 while left [코드 1 설명]이진 탐색 사용:left와 right로 배열의 양끝을 설정하고, 중간값 mid를 계산해가며 탐색.조건 비교:nums[mid] == targe..

[LeetCode/Java] 28. Find the Index of the First Occurrence in a String

28. Find the Index of the First Occurrence in a String [문제 설명]문자열 haystack에서 부분 문자열 needle이 처음 등장하는 인덱스를 반환하라.needle이 haystack에 없다면 -1을 반환한다.[문제 조건]needle이 빈 문자열이면 0을 반환한다.needle이 haystack에 없는 경우 -1 반환.[코드]public int strStr(String haystack, String needle) { if (needle.isEmpty()) return 0; int hLength = haystack.length(); int nLength = needle.length(); // haystack의 길이가 needle보다 짧으면 -1..

[LeetCode/Python] 27. Remove Element

27. Remove Element [문제 설명]정수 배열 nums, 특정 값 val 이 주어지면, 정수 배열 내에 있는 요소들 중 val과 같은 요소를 제자리에서 삭제한다.삭제 후 남은 요소의 개수를 반환한다.[문제 조건]배열 nums에서 모든 val 값을 제자리에서(in-place) 삭제해야 한다.삭제 후에는 배열에 val과 같지 않은 요소들만 남아야 한다.정렬 순서가 바뀌어도 상관없다.배열의 첫 k개의 요소가 val과 같지 않은 값들로 채워져 있어야 한다.[코드]class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rt..

[Python] 파이썬으로 알고리즘 풀기 전 필수 개념

알고리즘을 파이썬으로 준비하려는 개발자들에게 도움이 될 만한 필수 개념을 정리해보려고 합니다.저처럼 주 언어는 Java이지만 코딩 테스트는 Python으로 준비하는 개발자들에게 조금이나마 도움이 되고자중간에 Java 개념과 비슷하거나 다른게 있으면 적어놨으니 같이 참고해주세요만약 자바 개발자가 아니라면 해당 부분은 가볍게 넘어가주시면 됩니다.알고리즘을 풀기 전에 한 번 훑어보면서 개념을 정리하고 같이 코딩 테스트를 준비해봐요 !! 파이팅 !! 1.  기본 문법변수 선언x = 10 # 타입 지정 없음name = "Dengju"파이썬은 변수 선언 시 타입을 명시하지 않아도 된다자바처럼 int, String 등을 사용하지 않는다조건문if x > 5: print("x is greater than 5")elif ..

Python/알고리즘 2025.04.03