Study_Cat

꾸준히 공부하는 고양이가 될게요.

끊임없는 노력은 천재를 이긴다.

최신 글

more

[자료구조] Generic Dynamic Array 구현하기 ( 포인터 활용하기 )

이번에 구현해볼 것은, logN 만에 id를 찾아서 값을 update 하는 동적 Array입니다. linked_list 가 아니라 Array이기에 삽입, 삭제에 있어 O(N) 의 시간복잡도로 비효율적이라 사용하진 않지만 pointer 활용에 이해를 돕고자 구현해봤습니다.   또한 자료구조 수업에서 첫 번째 과제로 많이 나오는 내용이므로 코드를 활용하셔도 됩니다. 단, 댓글로 사용한다고만 남겨주시면 됩니다. valgrind 로 확인을 걸쳤으니 아마 문제는 없을겁니다. 아래 포스팅에서 비슷한 구조를 설명했기에 이번 포스팅에서는 디테일하게 설명하지는 않을 것 같습니다.  [자료구조] Ordered Linked List 구현하기만약 아래 소스코드를 사용한다면(과제나 블로그) 댓글로 목적을 적어주시고 사용해주세요..

C, C++ 2024.10.20 1

[solved.ac] 다이아V 달성과 앞으로의 목표

사실 다이아V 달성한지 쫌 오래됐는데요, 다시 열심히 글을 작성하고자 향후 목표나 다짐을 적어보고자 합니다.   여태까지 solved.ac 티어를 올리는 것을 목표로 했었는데.. 이제는 그냥 취미로 꾸준히 즐기고자 합니다. 대신에 웹 개발이나 데이터 분석같은 다양한 분야에 대해 공부하고 작은 프로젝트들을 진행하고자 합니다. 그리고 앞으로 대학교에서 재밌는 코딩이 나갈 예정이라 후배들을 위해 준비해야겠어요 :D   추가적으로 원래는 대회들을 나갈 생각이 없었는데.. 그냥 경험으로 생각하고 즐겨봐야겠어요!

알고리즘 2024.10.19 2

[자료구조] Ordered Linked List 구현하기

만약 아래 소스코드를 사용한다면(과제나 블로그) 댓글로 목적을 적어주시고 사용해주세요. 대학생분들이 사용하기 좋게 최대한 void ptr을 사용했으며 valgrind로 메모리 누수가 없음을 확인했습니다. 포인터에 대해 잘 모르신다면 아래 포스팅을 참고해주세요! [자료구조] 포인터와 동적 할당, 자료구조 입문하기! (with c언어)시작하기 앞서 자료구조 포스팅은 c++이 아닌 c언어로 진행됩니다! c언어는 c++과 달리 new, delete, struct 생성자/소멸자, template 없기에 불편할 수 있지만 자료구조를 보다 확실히 이해할 수 있습니다study-cat.tistory.com   1. include header#include #include // malloc#include // strd..

C, C++ 2024.10.18 0

[자료구조] 포인터와 동적 할당, 자료구조 입문하기! (with c언어)

시작하기 앞서 자료구조 포스팅은 c++이 아닌 c언어로 진행됩니다! c언어는 c++과 달리 new, delete, struct 생성자/소멸자, template 없기에 불편할 수 있지만 자료구조를 보다 확실히 이해할 수 있습니다.  1. 동적 할당int* data = (int*)malloc(sizeof(int));int* array = (int*)malloc(sizeof(int) * SIZE);  malloc은 원하는 만큼 heap 메모리를 할당하고 주소를 반환합니다. 이 때 '원하는 만큼' 의 주소 뿐이며 어떤 형태도 정혀지지 않았습니다( 자료형 ), 즉 void pointer의 상태로 return 되기에 형변환을 해줘야 합니다!  동적할당은 크게 2가지 이유로 사용된다고 생각합니다. 첫 번째는 '인스턴..

C, C++ 2024.10.18 0

[알고리즘 문제] 1146번 지그재그 서기

출처 : https://www.acmicpc.net/problem/1146 1. 접근1. 키(숫자)는 궁금하지 않다, 즉 (1 2 3 4) 나 (1 5 7 9) 는 같은 상태이다.2. 모든 키가 다르므로 결국 인원 수가 중요하다3. 가장 키가 큰 N을 어디에 배치할지 정하고 나눠진 구간을 subproblem 으로 계산하자!  처음부터 위와 같이 접근한 이유는 다음과 같습니다.1. 상태의 독립성을 나타내기 위한 정보는? -> "인원수"2. subproblem 으로 쪼개고 싶다! -> (3)  2. 고찰N을 배치함에 따라 left, right 영역으로 나눠진다고 할 때 다음과 같은 궁금증이 떠올랐습니다.dt[N] : 지그재그 서는 가지수라고 하고 ( left ) N ( right ) 꼴로 나타날 때,Q. l..

알고리즘 2024.07.14 3

[C/C++] 자료형의 프로모션(실수 방지!)

이 전의 글에서 다뤘었는데, 쫌 더 자세한, 추가적인 내용만 소개하고자 합니다. 1. 자료형의 프로모션?자료형이 다른 값들의 연산에서 어떤 자료형으로 연산되는가?  2. 자료형의 프로모션 규칙정수 + 실수 = 실수정수 + 정수 or 실수 + 실수 = 더 넓은 범위를 갖는 자료형int 형보다 작은 정수형 = int부호 없는 정수형 + 부호 있는 정수형 = 부호 없는 정수형위에서 + 로 표기한 것은 더하기 연산이 아닌 '자료형과 자료형의 만남' 을 표현하기 위해 사용했습니다.  int main(){ double num = 3/2; cout 1) cout 간단한 예시로 num은 double형으로 선언되었지만 선언 값은 정수와 정수의 연산이므로 1 이 출력됨을 알 수 있습니다. 두 번째의 if 또한 ..

C, C++ 2024.07.10 0

[웹 개발] CSS-Module 을 왜 사용해야 할까?

1. CSS 는 전역이다.위의 그림처럼 다른 component 파일을 정의하고 각각의 파일마다 다른 css 파일을 import하여 사용했습니다. 그리고 각각의 css파일들은 아래와 같습니다. 예상대로라면 빨/파/주/하 서로 다른 4개의 div가 생성되여야 합니다. 과연 결과는 어떨까요? 어라? 분명 각각의 파일마다 다른 css 파일을 import 했는데 Container1, Container2 의 색깔이 파란색으로 같습니다! css파일 경로로 import 한다고 해서 지역 scope라고 단정지을 수 없습니다. 사실 css파일은 전역으로 적용되기 때문에 className이 같다면 다른 파일을 import해도 위와 같은 결과가 나오게 됩니다. 하지만 코드를 짜다보면 ClassName이 중복될 수 밖에 없는데..

웹 개발 2024.07.10 0

인기 글

[React-Native] 환경 설정을 해보자! (Vscode 절망편..)

vscode로 작업할라고 욕심내고 5시간을 날리면서 고생했는데.. 저는 예~전에 android_studio를 깔아서 연결이 잘 안되서 그런지 결국 안됬지만 다른 부분의 애러는 전부 해결했기에 혹시나 해서 올려봅니다. 근데 어차피 vscode로 작업한다고 해도 android_studio를 깔아서 이용해야 하기도 하고.. 호환 문제도 있고 오류도 너~무 많은데.. 그냥 android-studio로 하는건 어떨까요? 저는 몹시 후회 중 입니다. [React-Native] Android-Studio에서 작업하기 (희망편) VsCode로 작업하고 싶다! 라고 생각하시는 분은 아래 링크로 들어가서 하시면 되겠습니다. (vscode로 셋팅하면 아~주 많고 많은 에러가 뜨는데... 그냥 앱 제작은 Android Stu..

앱 개발 2024.04.04 1

[미적분학] 역쌍곡선 함수의 미분 - feat. 역삼각함수

1. arcsinh 2. arccosh 3. arctanh 4. arccsch 5. arcsech 6. arccoth 7. 정리 및 팁 삼각함수와 하이퍼볼함수의 역함수 미분을 외우기 쉬운 팁이 있다. 1) 도함수 사용 역함수의 도함수를 구하기 위해 f(y) = x꼴로 바꾼 후 미분하여 해당 식을 활용한다. 이를 통해 원래 함수의 도함수를 사용함을 알 수 있다. 2) 함수의 관계 이용 전개 과정에서 y를 x에 대한 식으로 전환하는 과정에서 원래 함수의 도함수와 관계있는 식을 이용해 y에 대한 함수를 x로 바꿀 수 있다. 이를 통해 대략적인 함수식을 떠올릴 수 있다. 3) 적용 sin과 cos의 경우 $sin^2x + cos^2x = 1$ 이라는 관계식을 통해 $1-x^2$을 연상할 수 있다. tan는 $t..

미적분학I 2024.03.31 0

Typescript를 배워야 하는 이유 (feat. React 적용)

웹 개발 프로젝트를 진행하면서 typesciprt를 사용하게 됐습니다. 그래서 Typesciprt는 무엇이며 구지 왜 공부해서 써야하는 지 알아보도록 하겠습니다.1. Typescript는 무엇이고 왜 써야할까?타입스크립트는 자바스크립트의 슈퍼셋인 오픈소스 프로그래밍 언어이다. 마이크로소프트에서 개발, 유지하고 있으며 엄격한 문법을 지원한다. (wiki) 1) Javascript는 너무 자유롭다Javascript는 코딩하는 데 있어서 너무나도 제한이 없고 자유롭습니다. 처음 개발할 때는 편하게 느껴졌지만 이는 나중에 큰 프로젝트할 때 오히려 단점이 될 수 있습니다. "실행시간 오류" 를 제대로 catch해낼 수 없기 때문이죠! 그 중 가장 큰 문제의 원인은 변수의 type을 지정함으로 써 해결할 수 있습니..

웹 개발 2024.04.29 0

[React-Native] Android-Studio에서 작업하기 (희망편)

VsCode로 작업하고 싶다! 라고 생각하시는 분은 아래 링크로 들어가서 하시면 되겠습니다. (vscode로 셋팅하면 아~주 많고 많은 에러가 뜨는데... 그냥 앱 제작은 Android Studio에서 하는 것을 매우매우 권장합니다. + 어차피 vscode로 해도 Android Studio 깔아야 되요...) [React-Native] 환경 설정을 해보자! (Vscode 절망편..) Vscode 에서 작업할라고 했으나 4~5시간 환경 설정 똑같은 부분에서 막혀서 결국 Android Studio 를 사용하게 되었습니다. 공통된 부분도 있으므로 봐주시면 감사하겠습니다. 저는 Vscode에서 왠진 몰라 study-cat.tistory.com 1. SDK 설치 일단 기본적인 Android Studio설치는 건너..

앱 개발 2024.04.04 1

[웹 개발] React + Express(Nodejs) 연동하기

해당 포스팅은 Window 에서 진행하였습니다. 1. 프론트앤드 / 백앤드가 햇갈려요! 많이 착각하는 부분이 React와 Express 서버에 관한 내용입니다. 만약 React 프로젝트를 생성했다면 React 서버가 따로 존재할 것이며, Express를 이용하여 Server를 따로 만든다면 Express서버가 따로 존재하게 됩니다. 개발하는 단계에서는 React와 Express 서버를 연결해줘야 합니다. 배포하는 단계에서는 npm build를 통해 하나의 서버로 합쳐주면 됩니다.  ReactExpress서버Nodejs 서버 사용Express를 이용해 커스텀마이징작업화면에 나타날 UI 및 로직 제작API 제작 및 프로토콜 통신 제어 백앤드 공부 참고 블로그(다른분) : https://velog.io/@ys..

웹 개발 2024.06.26 0

[자료구조] 포인터와 동적 할당, 자료구조 입문하기! (with c언어)

시작하기 앞서 자료구조 포스팅은 c++이 아닌 c언어로 진행됩니다! c언어는 c++과 달리 new, delete, struct 생성자/소멸자, template 없기에 불편할 수 있지만 자료구조를 보다 확실히 이해할 수 있습니다.  1. 동적 할당int* data = (int*)malloc(sizeof(int));int* array = (int*)malloc(sizeof(int) * SIZE);  malloc은 원하는 만큼 heap 메모리를 할당하고 주소를 반환합니다. 이 때 '원하는 만큼' 의 주소 뿐이며 어떤 형태도 정혀지지 않았습니다( 자료형 ), 즉 void pointer의 상태로 return 되기에 형변환을 해줘야 합니다!  동적할당은 크게 2가지 이유로 사용된다고 생각합니다. 첫 번째는 '인스턴..

C, C++ 2024.10.18 0

[알고리즘 개념] Query 문제 테크닉 Mo's 알고리즘

Mo's 알고리즘 이란?구간 질의하는 Query 문제에서 업데이트되지 않는 특수한 상황에서 사용할 수 있는 알고리즘으로 기존의 구간 쿼리는 O(NM)인 반면 Mo's 를 사용하면 O(M sqrt N) 으로 줄일 수 있습니다.  아이디어데이터가 추가적으로 업데이트되지 않는다면, 모든 쿼리에 대해서 항상 전체를 탐색해줄 필요는 없습니다. 이 전에 계산한 구간의 값을 참고하여 답을 구할 수 있습니다.   일단 데이터 길이를 N으로 했을 때 sqrt(N) 의 길이로 그룹을 나눕니다. 위 그림은 N = 10 일때의 그림이며 4개의 구간으로 나눌 수 있습니다. ( 왜 sqrt(N) 으로 나누는지는 아래에 설명하겠습니다 )  만약 위처럼 3가지 쿼리가 주어졌다고 할 때 어떻게 작동하는지 간략하게 그림으로 보고 자세히..

알고리즘 2024.06.04 0