전체 글 96

생활코딩 리액트 2022 ver (2)

* 본 포스팅은 생활코딩 리액트(2022)의 요약본입니다! 강의 링크는 포스팅 아래에 첨부하겠습니다 ^__^ **useState 추가개념 내가 상태로 만드려는 데이터가 원시타입일 경우에는 지금까지 하던것처럼 그냥 하면된다. 그런데 데이터가 범객체(객체, 배열 등)인 경우에는 좀 다른 방식으로 진행해야하는데 우선 데이터를 복제해놓고(newValue), 복제한 데이터를 변경한다. 다시말해 원본 데이터(value)를 바꾸는 것이 아니라, 복제본을 바꾸는 것이다. 그리고 setValue에 newValue를 넣어주면 그 때 비로소 컴포넌트가 재실행된다. 리액트는 setValue를 호출했을때, 원본 데이터와 새로운 데이터가 같은 데이터인지를 확인하고 만약 같다면 굳이 컴포넌트를 다시 렌더링하지 않는다. 그래서 배열..

기타 개발공부 2022.07.30

생활코딩 리액트 2022 ver (1)

* 본 포스팅은 생활코딩 리액트(2022)의 요약본입니다! 강의 링크는 포스팅 아래에 첨부하겠습니다 ^__^ 리액트란? 사용자 정의 태그를 만드는 기술이다! 이 사용자 정의 태그를 리액트에서는 '컴포넌트'라고 부른다. import React from "react"; import "./style.css"; function Header() { return ( Header! ) } function Nav() { return ( 1.html 2.css 3.js ) } function Article() { return ( Hello! Welcome to my Blog! ) } function App() { return ( ); } export default App; props html태그의 속성과 같은 개념을 리..

기타 개발공부 2022.07.30

사용한 라이브러리 관리

장고로 개발하는 중간중간에 설치해서 사용한 라이브러리를 텍스트파일로 편리하게 관리할 수 있다. 우선 장고앱아래에 requirements.txt 파일을 생성하고 그 아래에 장고 버전과 라이브러리명을 적는다. django~=3.0.0 #버전을 타는 경우에는 버전도 기재. 그렇지 않으면 굳이 안써도 됨! pillow 그리고 해당앱을 실행하기 위해 사용된 패키지를 설치할 필요가 있을 경우, 다음 명령어를 통해서 일괄설치가 가능하다. pip install -r requirements.txt

django, drf 2022.07.28

재귀 알고리즘

재귀란? 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의되는것을 말한다. 간단한 예로 팩토리얼을 들 수가 있다. n! = n * (n-1) 팩토리얼을 메서드로 구현하여 사용한 코드는 다음과 같다. import java.util.*; public class Main { //양의 정수 n의 팩토리얼을 반환합니다. static int factorial(int n){ if(n>0) return n * factorial(n-1); else return 1; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("정수를 입력하세요.:"); int x = scanner.n..

자료구조 2022.07.17

큐(Queue)

큐란? 데이터를 일시적으로 쌓아놓은 자료구조이다. 데이터의 입출력순서는 선입선출(먼저 들어온 것이 먼저 나감)이다. 큐에 데이터를 넣는 작업을 인큐(enqueue), 꺼내는 작업을 디큐(dequeue)라고 한다. 즉 어떤 데이터를 인큐하면 큐의 맨 뒤에 데이터를 추가하고, 데이터를 디큐하면 큐의 맨 앞 데이터를 제거한다음 한칸씩 앞으로 당긴다. 근데 이렇게 디큐할때의 복잡도는 O(n)으로, 데이터를 하나 꺼낼때마다 이런 처리를 한다면 효율이 매우 떨어진다. 이런 문제점은 링버퍼를 사용하여 큐를 구현하면 개선할 수 있다. 프런트와 리어 값을 업데이트하며 인큐와 디큐를 수행하게 되기 때문이다. [ O(1) ] 다음은 링버퍼로 큐를 구현하는 코드이다. 구간별 설명은 주석으로 대신한다! import java.u..

자료구조 2022.07.16

스택(Stack)

스택이란? 데이터를 일시 저장하는 자료구조. 데이터의 입출력순서는 후입선출(나중에 들어온 것이 먼저 나감)이다. 스택에 데이터를 넣는 작업을 푸시(push) 스택에서 데이터를 꺼내는 작업을 팝(pop)이라고 한다. 자바에서 메서드를 호출하고 실행할때도 내부적으로 스택을 사용한다. 다음은 스택클래스 IntStack을 구현하고 이를 사용하는 프로그램이다. 각 메서드에 대한 설명은 주석에 적혀있다! import java.util.*; public class Main { static class IntStack{ private int max; //스택 용량 private int ptr; //스택 포인터 private int[] stk; //스택 본체 //실행시 예외: 스택이 비어있음 public class Emp..

자료구조 2022.07.16

배열검색 (이진검색)

이진검색 이진검색은 요소가 오름차순 또는 내림차순으로 이미 정렬된 배열에서 검색하는 알고리즘이다. 배열의 가운데 인덱스와 찾고싶은 값을 비교하면서 검색범위를 반씩 줄여가며 원하는 값을 찾아낸다. [ O(log n) ] import java.util.*; public class Main { //길이가 n인 배열 a에서 key를 이진검색합니다. static int binSearch(int[] a, int n, int key){ int pl = 0; //검색 범위의 첫 인덱스 int pr = n-1; //검색 범위의 끝 인덱스 do{ int pc = (pl + pr) / 2; //중앙 인덱스 if(a[pc]==key) //검색 성공 return pc; else if(a[pc]

자료구조 2022.07.15

배열 검색 (선형검색, 보초법)

요소가 직선 모양으로 늘어선 배열에서의 검색은 원하는 값을 찾을때까지 맨 앞부터 순서대로 요소를 검색하면 된다. 이것을 선형검색(linear search)또는 순차검색(sequential search)이라고 한다. 그리고 배열을 이용해 선형검색을 수행하는 코드는 다음과 같다. import java.util.*; public class Main { //배열의 길이가 n인 배열 a에서 key라는 값을 검색하여 존재하면 인덱스 i를, 존재하지않으면 -1을 반환한다. static int seqSearch(int[] a, int n, int key){ for (int i = 0; i < n; i++) { if(a[i]==key) return i; //검색성공 } return -1; //검색실패 } public s..

자료구조 2022.07.15

다차원 배열의 복제

자바에서 다차원 배열의 복제는 최상위 1레벨만 수행한다. 예를 들어 1차원배열의 복제를 생각해보면, int[] a = {1, 2, 3}; int[] b = a.clone(); 이 경우에 b는 a의 배열을 공유하는 것이 아니라 복제한다. (깊은 복사, Deep copy) int[][] a = {{1, 2, 3, 4}, {5, 6, 7}}; int[][] b = a.clone(); // 1차원배열만 복제되어 b[0], b[1]의 주솟값만 따로가지고, 그 아래 레벨의 배열은 복제되지않고 공유된다. 하지만 2차원 배열에서는 최상위 1레벨 즉, 1차원만 복제하고 그 아래 레벨에 대해서는 그냥 공유만 한다. (얕은 복사, Shallow copy)

기타 개발공부 2022.07.15

한 해의 경과일수 구하기 [java]

자바의 2차원 배열을 이용하여 한 해의 경과일수를 구하는 코드이다. 평년과 윤년을 2차원배열에 담아 사용했다. import java.util.*; public class Main { static int[][] mdays = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, //평년의 일수 {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, //윤년의 일수 }; //year년은 윤년인가 평년인가? (윤년이면 1, 평년이면 0) static int isLeap(int year){ return (year%4==0 && year%100!=0 || year%400==0) ? 1 : 0; } //y년 m월 d일의 그 해 경과 일 수를 ..

자료구조 2022.07.14