분류 전체보기
-
🍊 객체지향 프로그래밍객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 현실에 존재하는 객체를 소프트웨어에 표현하기 위한 방법이다. 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성한다. 객체 지향 언어는 크게 두 가지 범주로 나눌 수 있다:1. 클래스 기반 객체 지향 언어2. 프로토타입 기반 객체 지향 언어 이번 포스팅에서는 이 두 가지 접근 방식의 개념과 특징, 그리고 주요 차이점을 살펴보려고 한다! 🍊 클래스 기반클래스 기반 객체지향 언어(Java,C++)클래스 기반 객체 지향 언어는 객체를 정의하기 위해 클래스라는 구조를 사용한다.클래스를 통해 객체의 속성(attribute)과 행위(meth..
[JavaScript]객체지향 프로그래밍 (클래스 기반 vs 프로토타입 기반)🍊 객체지향 프로그래밍객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 현실에 존재하는 객체를 소프트웨어에 표현하기 위한 방법이다. 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성한다. 객체 지향 언어는 크게 두 가지 범주로 나눌 수 있다:1. 클래스 기반 객체 지향 언어2. 프로토타입 기반 객체 지향 언어 이번 포스팅에서는 이 두 가지 접근 방식의 개념과 특징, 그리고 주요 차이점을 살펴보려고 한다! 🍊 클래스 기반클래스 기반 객체지향 언어(Java,C++)클래스 기반 객체 지향 언어는 객체를 정의하기 위해 클래스라는 구조를 사용한다.클래스를 통해 객체의 속성(attribute)과 행위(meth..
2024.07.28 -
🍇 문제 🍇 문제 풀이알고리즘 설계 수업 들을 때 풀었던 문제와 거의 똑같아서, 바로 풀 수 있었다! (비슷한 문제 풀어보고 싶다면 아래 포스팅 참고해주세요!)https://breath-in317.tistory.com/entry/DP-%EC%88%AB%EC%9E%90%ED%8C%90-%EB%86%80%EC%9D%B4 [Dynamic Programming] 숫자판 놀이문제숫자들이 2차원 배열에 있다. 가장 윗 행에서 가장 아래 행까지 내려올때 걸 쳐지는 길에 있는 숫자의 합이 가장 높은것을 찾아보자. 이 때 어느 한 cell에 서 다음 cell로 내려올 경우에는 바breath-in317.tistory.com 풀이방법1. 2차원 배열을 ground로 저장한다.2. 각각의 셀(index (i,j))에 ..
[백준 11048] 이동하기(DP) - Python🍇 문제 🍇 문제 풀이알고리즘 설계 수업 들을 때 풀었던 문제와 거의 똑같아서, 바로 풀 수 있었다! (비슷한 문제 풀어보고 싶다면 아래 포스팅 참고해주세요!)https://breath-in317.tistory.com/entry/DP-%EC%88%AB%EC%9E%90%ED%8C%90-%EB%86%80%EC%9D%B4 [Dynamic Programming] 숫자판 놀이문제숫자들이 2차원 배열에 있다. 가장 윗 행에서 가장 아래 행까지 내려올때 걸 쳐지는 길에 있는 숫자의 합이 가장 높은것을 찾아보자. 이 때 어느 한 cell에 서 다음 cell로 내려올 경우에는 바breath-in317.tistory.com 풀이방법1. 2차원 배열을 ground로 저장한다.2. 각각의 셀(index (i,j))에 ..
2024.07.28 -
🍎 React-Router를 사용하는 이유 프로젝트를 진행하면서 React Router Dom을 사용하면 React 애플리케이션 내에서 페이지 간 이동을 쉽게 구현할 수 있다.기존 태그를 사용할 경우, 페이지 전체가 새로 로딩된다.이는 화면 깜빡임이 필수적으로 발생하고, 이는 사용자 경험을 떨어뜨릴 수 있다! React-Router를 사용하면, 라우팅을 통해 부드러운 화면 전환이 가능해진다.즉, SPA 사용자 경험 향상을 위해 React Router를 사용하는 것이다. Router의 종류에는 HashRouter, BrowserRouter가 있다. 나는 주로 BrowserRouter를 사용하여 개발을 해왔다. +) 이전에 하루네컷 서비스를 진행할 때, 배포 후 로그인 기능에서 리다이렉트가 안되는 문제를 ..
[React] React Router DOM: Link 태그와 useNavigate의 차이🍎 React-Router를 사용하는 이유 프로젝트를 진행하면서 React Router Dom을 사용하면 React 애플리케이션 내에서 페이지 간 이동을 쉽게 구현할 수 있다.기존 태그를 사용할 경우, 페이지 전체가 새로 로딩된다.이는 화면 깜빡임이 필수적으로 발생하고, 이는 사용자 경험을 떨어뜨릴 수 있다! React-Router를 사용하면, 라우팅을 통해 부드러운 화면 전환이 가능해진다.즉, SPA 사용자 경험 향상을 위해 React Router를 사용하는 것이다. Router의 종류에는 HashRouter, BrowserRouter가 있다. 나는 주로 BrowserRouter를 사용하여 개발을 해왔다. +) 이전에 하루네컷 서비스를 진행할 때, 배포 후 로그인 기능에서 리다이렉트가 안되는 문제를 ..
2024.07.23 -
0. 들어가며 정렬 알고리즘은 시간 복잡도에 따라 성능이 좌우되며, 성능이 좋을 수록 구현 방법이 어려워진다 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가)버블 정렬(Bubble Sort)선택 정렬(Selection Sort)삽입 정렬(Insertion Sort)O(n log n)의 시간 복잡도병합 정렬(Merge Sort)퀵 정렬(Quick Sort)셸 정렬 1. 버블 정렬버블정렬은 인접한 두 수를 비교하며 정렬해나가는 방법으로 O(n²)의 느린 성능을 가지고 있다. 주요 처리 과정앞에서부터 (2개씩 비교를 )시작하여 큰 수를 뒤로 보내, 뒤가 가장 큰 값을 가지도록 완성해나가는 방법이다.한바퀴 돌면, 가장 오른쪽 원소는 최대값으로 fix될테니, 고정시켜두고, 그 앞 인덱..
정렬 알고리즘 총정리0. 들어가며 정렬 알고리즘은 시간 복잡도에 따라 성능이 좌우되며, 성능이 좋을 수록 구현 방법이 어려워진다 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가)버블 정렬(Bubble Sort)선택 정렬(Selection Sort)삽입 정렬(Insertion Sort)O(n log n)의 시간 복잡도병합 정렬(Merge Sort)퀵 정렬(Quick Sort)셸 정렬 1. 버블 정렬버블정렬은 인접한 두 수를 비교하며 정렬해나가는 방법으로 O(n²)의 느린 성능을 가지고 있다. 주요 처리 과정앞에서부터 (2개씩 비교를 )시작하여 큰 수를 뒤로 보내, 뒤가 가장 큰 값을 가지도록 완성해나가는 방법이다.한바퀴 돌면, 가장 오른쪽 원소는 최대값으로 fix될테니, 고정시켜두고, 그 앞 인덱..
2024.07.23 -
문제 풀이 경우의수를 통해 규칙성을 발견해 dp[i] = dp[i-1] + 2 * d[i-2] 이라는 점화식을 세웠다. 코드n = int(input())dp = [0] * 1001# 초기값 지정dp[0] = 1dp[1] = 1for i in range(2, n+1): dp[i] = dp[i-1] + 2 * dp[i-2]print(dp[n]%10007) *주의dp = [0]*(N+1)로 dp배열을 만들 수 있지만, 이 경우 N=0인 경우에 dp[1]을 참조할 수 없게 된다 (런타임 에러 (IndexError) 발생)주어진 입력이 1 ≤ n ≤ 1,000 이므로, 처음부터 크기가 1001으로 배열의 크기를 지정해서 런타임에러를 방지할 수 있다.그게 아니라면, 런타임 에러를 방지하기 위해 아래와 같이..
[백준 11727] 2xn 타일링 2(DP)문제 풀이 경우의수를 통해 규칙성을 발견해 dp[i] = dp[i-1] + 2 * d[i-2] 이라는 점화식을 세웠다. 코드n = int(input())dp = [0] * 1001# 초기값 지정dp[0] = 1dp[1] = 1for i in range(2, n+1): dp[i] = dp[i-1] + 2 * dp[i-2]print(dp[n]%10007) *주의dp = [0]*(N+1)로 dp배열을 만들 수 있지만, 이 경우 N=0인 경우에 dp[1]을 참조할 수 없게 된다 (런타임 에러 (IndexError) 발생)주어진 입력이 1 ≤ n ≤ 1,000 이므로, 처음부터 크기가 1001으로 배열의 크기를 지정해서 런타임에러를 방지할 수 있다.그게 아니라면, 런타임 에러를 방지하기 위해 아래와 같이..
2024.07.19 -
문제 풀이시도1) 메모리초과K = int(input())if K==1: print(0,1,end=" ")else: dp = [""]*(K+1) dp[0] = "1" dp[1] = "0" for i in range(2,K+1): dp[i] = dp[i-1] + dp[i-2] final = dp[-1] a_num = final.count("1") b_num = final.count("0")print(a_num,b_num,end=" ") 메모리 초과 이유 dp 배열을 문자열로 채운 것이 메모리 초과의 이유다. 문자열의 길이는 지수적으로 증가하기 때문에 K가 크면 매우 큰 문자열을 생성하게 되고, 이에 따라 메모리 사용량도 급격히 증가하된다 ( 참고로..
[백준 9625] BABBA (DP)문제 풀이시도1) 메모리초과K = int(input())if K==1: print(0,1,end=" ")else: dp = [""]*(K+1) dp[0] = "1" dp[1] = "0" for i in range(2,K+1): dp[i] = dp[i-1] + dp[i-2] final = dp[-1] a_num = final.count("1") b_num = final.count("0")print(a_num,b_num,end=" ") 메모리 초과 이유 dp 배열을 문자열로 채운 것이 메모리 초과의 이유다. 문자열의 길이는 지수적으로 증가하기 때문에 K가 크면 매우 큰 문자열을 생성하게 되고, 이에 따라 메모리 사용량도 급격히 증가하된다 ( 참고로..
2024.07.18 -
슬라이딩 윈도우 알고리즘(Sliding Window)고정된 사이즈의 윈도우를 이동시켜셔 윈도우 내에 있는 데이터를 이용해 문제를 푸는 알고리즘이다. 배열이나 리스트의 요소의 일정 범위의 값을 비교할 때 사용하기에 유용하다ex) 구간 합 구하기, 부분 문자열 구하기 등 슬라이딩윈도우와 투포인터슬라이딩 윈도우 알고리즘은 *투 포인터와 유사하게 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘이지만, 부분 배열의 길이(크기)가 고정적 이라는 가장 큰 차이점이 있다. 슬라이딩 윈도우투포인터공통점- 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘 - 선형 공간(1차원 배열)을 2회 이상 반복적으로 탐색해야 할 경우O(N²) 이상 걸릴 시간 복잡도를 부분 배열을 활용하여 O(N)으로 줄일 수 있..
[Sliding Window] 슬라이딩 윈도우 알고리즘슬라이딩 윈도우 알고리즘(Sliding Window)고정된 사이즈의 윈도우를 이동시켜셔 윈도우 내에 있는 데이터를 이용해 문제를 푸는 알고리즘이다. 배열이나 리스트의 요소의 일정 범위의 값을 비교할 때 사용하기에 유용하다ex) 구간 합 구하기, 부분 문자열 구하기 등 슬라이딩윈도우와 투포인터슬라이딩 윈도우 알고리즘은 *투 포인터와 유사하게 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘이지만, 부분 배열의 길이(크기)가 고정적 이라는 가장 큰 차이점이 있다. 슬라이딩 윈도우투포인터공통점- 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘 - 선형 공간(1차원 배열)을 2회 이상 반복적으로 탐색해야 할 경우O(N²) 이상 걸릴 시간 복잡도를 부분 배열을 활용하여 O(N)으로 줄일 수 있..
2024.07.17 -
ATT 계층은 서버의 데이터베이스에서 데이터가 어떻게 저장되고 접근되는지를 정의한다. 데이터 - >속성(Attributes)이라는 데이터 구조의 형태로 저장된다. 속성 - 속성은 사용자 데이터와 속성 자체에 대한 메타데이터(속성 유형, 보안 권한 등)를 포함한다. - ATT 서버와 클라이언트 간, 또는 GATT 서버와 클라이언트 간의 데이터 교환은 속성의 형태로 이루어진다. - 속성만을 논할 때 => ATT 서버에 저장된다고 한다. - 반면, 속성을 서비스와 특성으로 분류할 때 => 이를 GATT 서버의 데이터 구조라고 한다. 속성은 네 가지 주요 구성 요소로 이루어져 있다. 속성 (Attributes) 핸들 (Handle): 특정 속성에 할당된 16비트 고유 인덱스유형 (UUID): 속성의 유형을 나타..
[BLE] Services and characteristicsATT 계층은 서버의 데이터베이스에서 데이터가 어떻게 저장되고 접근되는지를 정의한다. 데이터 - >속성(Attributes)이라는 데이터 구조의 형태로 저장된다. 속성 - 속성은 사용자 데이터와 속성 자체에 대한 메타데이터(속성 유형, 보안 권한 등)를 포함한다. - ATT 서버와 클라이언트 간, 또는 GATT 서버와 클라이언트 간의 데이터 교환은 속성의 형태로 이루어진다. - 속성만을 논할 때 => ATT 서버에 저장된다고 한다. - 반면, 속성을 서비스와 특성으로 분류할 때 => 이를 GATT 서버의 데이터 구조라고 한다. 속성은 네 가지 주요 구성 요소로 이루어져 있다. 속성 (Attributes) 핸들 (Handle): 특정 속성에 할당된 16비트 고유 인덱스유형 (UUID): 속성의 유형을 나타..
2024.07.14