매일은 아니더라도 꾸준하게
728x90

전체 글 34

[알고리즘이론] DP(Dynamic Programming : 동적 프로그래밍) 파이썬으로 구현하기

DP(Dynamic Programming)는 이전에 계산한 값을 저장해 놓고 재활용하여 중복 계산을 줄이는 알고리즘 기법입니다. 파이썬에서는 DP를 구현하는 방법은 여러가지가 있습니다. 여기서는 Memoization 방식과 Bottom-up 방식을 예제 코드로 설명하겠습니다. Memoization 방식 Memoization은 이전에 계산한 값을 저장하고 재활용하는 방식입니다. 이전에 계산한 값이 필요할 때마다 값을 조회하여 사용합니다. Memoization 방식은 보통 재귀 함수와 함께 사용됩니다. 아래는 Memoization 방식을 사용하여 피보나치 수열을 구하는 예제 코드입니다. # Memoization 방식으로 구현한 피보나치 수열 예제 memo = [0] * 100 # 메모이제이션을 위한 리스트 ..

[알고리즘이론] 파이썬 자료구조

파이썬에서는 다양한 자료구조를 제공합니다. 각 자료구조의 특징과 사용 방법을 살펴보겠습니다. 리스트(List) 리스트는 순서가 있는 데이터의 집합으로, 대괄호([])로 표현합니다. 원소들은 쉼표로 구분합니다. 리스트는 수정이 가능하며, 인덱싱과 슬라이싱을 통해 데이터를 접근할 수 있습니다. 예시: a = [1, 2, 3, 4, 5] # 리스트 생성 print(a) # [1, 2, 3, 4, 5] print(a[0]) # 1 print(a[2:4]) # [3, 4] a[1] = 10 # 리스트 값 수정 print(a) # [1, 10, 3, 4, 5] 튜플(Tuple) 튜플은 리스트와 유사하지만, 수정이 불가능합니다. 소괄호(())로 표현합니다. 예시: a = (1, 2, 3) # 튜플 생성 print(a..

[알고리즘이론] 파이썬으로 BFS 구현

BFS(Breadth-First Search)는 큐(Queue)를 이용하여 구현할 수 있습니다. 큐는 선입선출(FIFO) 구조이므로, BFS에서는 현재 노드와 인접한 노드 중 방문하지 않은 노드가 있으면 해당 노드를 큐에 삽입하고 방문 처리합니다. 그리고 큐에서 꺼낸 노드를 다시 시작점으로 하여 인접한 노드 중 방문하지 않은 노드가 있으면 큐에 삽입하고 방문 처리합니다. 이 과정을 큐가 빌 때까지 반복하면 됩니다. 아래는 큐를 사용하여 BFS를 구현한 예제 코드입니다. # 큐를 사용한 BFS 구현 예제 from collections import deque def bfs(start, adj_list): visited = [False] * len(adj_list) # 각 노드의 방문 여부를 저장할 리스트 q..

[알고리즘이론] 파이썬으로 DFS 구현

1. 재귀함수 DFS(깊이 우선 탐색)를 파이썬으로 구현하려면, 일반적으로 재귀 함수를 사용하여 구현할 수 있습니다. 아래는 간단한 예제 코드입니다. # 인접 리스트를 사용한 DFS 구현 예제 def dfs(v, visited, adj_list): visited[v] = True # 현재 노드를 방문 처리 print(v, end=' ') # 현재 노드 출력 for i in adj_list[v]: # 현재 노드와 인접한 노드 중 if not visited[i]: # 방문하지 않은 노드가 있다면 dfs(i, visited, adj_list) # 해당 노드를 방문 # 예제 그래프 adj_list = { 1: [2, 3, 4], 2: [1, 4, 5], 3: [1, 6, 7], 4: [1, 2, 5], 5: [..

[처음 만난 리액트]섹션 3. JSX

JSX의 정의와 역할 JSX의 정의 A syntax extension to Javascript 즉 자바스크립트의 확장 문법 자바스크립트 + XML/HTML 1 const element = Hello, world!; 역할 JSX는 내부적으로 XML 코드를 자스로 변환하는 과정을 거침 React.createElement( type, [props], [...children] ) JSX를 사용한 코드 class Hello extends React.Component { render() { return Hello {this.props.toWhat}; } } ReactDOM.render( , document.getElementById('root') ); JSX를 사용하지 않은 코드 // JSX를 사용한 코드 cons..

[처음 만난 리액트]섹션 2. 리액트 시작하기

섹션 2. 리액트 시작하기 index.html 잡식성 개발자 블로그에 오신 여러분을 환영합니다. 잡식성 개발자 블로그에 오신 여러분을 환영합니다. {/* DOM Conatiner(Root DOM Node) */} MyButton.js // MyButton.js function MyButton(props) { const [isClicked, setIsClicked] = React.useState(false); return React.createElement( 'button', { onclick: () => setIsClicked(true) }, isClicked ? 'Clicked!' : 'Click here!' ) } const domContainer = doc..

[처음 만난 리액트]섹션 1. 리액트 소개

섹션 1. 리액트 소개 리액트는 무엇인가? 라이브러리 자주 사용되는 기능들을 정리해 모아 놓은 것 리액트는 자바스크립트 UI 라이브러리 프레임워크 vs 라이브러리 프레임워크 프로그램의 흐름의 제한을 개발자가 아닌 프레임워크가 가지고 있음. 라이브러리는 프로그램의 흐름을 개발자가 제어함. 리액트의 장점과 단점 리액트의 장점 빠른 업데이트와 렌더링 속도 Virtual DOM(Document Object Model) Component-Based 레고 블록 조립하듯 컴포넌트들을 모아서 개발 아래는 Air BnB 사이트 재사용성 계속해서 사용이 가능한 성질 - 모듈의 의존성을 낮추고 호환성을 높임. ⇒ 재사용성을 높임 - 효과 - 개발 기간 단축 - 유지 보수 용이 - Meta라는 든든한 지원군 - 커뮤니티의 활..

[처음 만난 React]섹션 0. 준비하기

1. HTML과 CSS HTML 정의 : 웹사이트의 뼈대를 구성하기 위해 사용하는 마크업 언어 태그 태그를 사용해 구조를 형성하고 내용을 채움(ex. 태그는 열었으면 꼭 닫아줘야 함. 웹사이트의 뼈대를 구성하는 태그들 head : 웹사이트의 설명 등을 담고 있음. 메타데이터 body : 실제로 웹사이트에서 보이는 컨텐츠가 들어감 SPA(Single Page Application) 하나의 페이지만 존재하는 웹 사이트 또는 웹 애플리케이션 CSS(Cascading Style Sheets) 웹사이트의 레이아웃과 글꼴 등 디자인을 입히는 것. 2. JavaScript 소개 및 자료형 Javascript = ECMAScript html은 웹사이트의 뼈대, 자바스크립트는 웹사이트에 생명을 불어넣어 주는 역할 스크립..

Java 기초 문법 : 자료형 - 숫자 타입

자료형 : 숫자타입 변수는 선언될 때의 타입에 따라 저장할 수 있는 값의 종류와 허용 범위가 달라진다. 자바는 정수, 실수, 논리값을 저장할 수 있는 기본 타입 8개를 다음과 같이 제공한다. 타입 세부타입 데이터형 크기 논리형 boolean 문자형 char 2byte 숫자형 정수형 byte 1byte 숫자형 정수형 short 2byte 숫자형 정수형 int 4byte 숫자형 정수형 long 8byte 숫자형 실수형 float 4byte 숫자형 실수형 double 8byte 자료형의 크기를 비교하면 다음과 같다. byte < short < int < long < float < double char < int < long < float < double 코드에서 프로그래머가 직접 입력한 값을 리터럴이라고 하는..

[Python]알고리즘 기본 유형 - 유효한 팰린드롬

팰린드롬(회문)이란 앞뒤가 똑같은 문장으로 , 뒤집어도 같은 말이 되는 단어 또는 문장을 팰린드롬(Palindrome)이라고 한다. 우리말로는 &#39;회문&#39;이라 부르며, 문장 중에서는 대표적으로 &#39;소주 만 병만 주소&#39;를 예로 들 수 있다. 기본적인 palindrome 유형의 문제는 어떻게 해결하는지 다음의 예제를 통해 알아보자. 주어진 문자열이 팰린드롬인지 확인하여 맞다면 True, 아니라면 False를 출력하라. 단 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. // 입력 1 : "A man, a plan, a canal: Panama" // 입력 2 : "race a car" 풀이 1 : 리스트로 변환 여기서는 직접 문자열을 입력받아 팰린드롬 여부를 판별해 본다..

728x90