일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- nestjs typeorm
- git
- 파이썬
- 시스템호출
- 프로그래머스
- 카카오
- nestjs auth
- @Component
- TypeORM
- 카카오 알고리즘
- python
- 스프링
- Nodejs
- 가상면접사례로배우는대규모시스템설계기초
- spring boot
- OpenCV
- 코딩테스트
- C언어
- AWS
- 카카오 코테
- 컴포넌트스캔
- 코테
- 알고리즘
- Spring
- 해시
- 구조체배열
- nestJS
- @Autowired
- thymeleaf
- C++
- Today
- Total
목록전체 (333)
공부 기록장 💻
원형 연결 리스트의 구조 - 마지막 노드가 첫번째 노드를 가리키게 하여 리스트의 구조를 원형으로 만든 연결 리스트 => 마지막 노드의 링크필드가 NULL 이 아닌, 첫번째 노드의 주소이다. 장점 - 하나의 노드에서 다른 모든 노드로의 접근이 가능 - 하나의 노드에서 링크를 계속 따라가면 결국 모든 노드를 거쳐 자기 자신으로 되돌아오는 것이 가능 - 노드의 삽입과 삭제가 단순 연결 리스트보다는 용이함 - 특히, 리스트의 끝에 노드를 삽입하는 연산이 단순 연결리스트보다 효율적 -> 헤드 포인터에서 시작하여 모든 노드를 거쳐 마지막에 삽입하는 것이 아니라, 헤드포인터가 마지막 노드를 가리키도록 구성하면 리스트의 처음과 끝에 노드를 삽입할 수 있다. 원형 연결 리스트의 구현 헤드포인터 head는 항상 마지막 노..
(명품 C++ 프로그래밍 CH 12) 텍스트 파일 & 바이너리 파일 파일(File): 저장 매체에 저장되는 정보 - 바이트나 블록 단위로 입출력된다. - 데이터 종류에 따라 텍스트(문자) / 바이너리(문자, 이미지 등) 파일로 나뉜다. 텍스트 파일 - 글자 혹은 문자로만 구성되는 문서 파일 - 각 글자마다 고유한 바이너리 코드(이진코드- ASCII/UNI code) 로 구성되어 있으며, 텍스트 파일엔 문자 코드만 저장됨 - ex) txt, html, xml, c/c++/java source file 텍스트 파일의 키 1) '\r' carriage return 제어 코드(ASCII코듸 0x0D(십진수 13)) - 커서를 현재 줄의 맨 앞으로 옮기도록 하는 지시 2) '\n' line feed 제어 코드 (..
명품 C++ 프로그래밍 11장 1. ch=cin.get() EOF #include using namespace std; int main(){ int ch, cnt=0; while((ch=cin.get())!=EOF){ if(ch=='\n') break; if(ch=='a') cnt++; } cout
명품 C++ 프로그래밍 9장 실습 문제 1. #include using namespace std; class Converter{ protected: double ratio; virtual double convert(double src)=0; // src를 다른 단위로 변환 virtual string getSourceString()=0; // src 단위 명칭 virtual string getDestString()=0; // dest 단위 명칭 public: Converter(double ratio){this->ratio=ratio;} void run(){ double src; cout
(명품 C++ Programming 10장) 1. #include using namespace std; template T biggest(T arr[], int n){ T big=arr[0]; for(int i=1;ibig) big=arr[i]; return big; } int main(){ int x[]={1,10,100,5,4}; cout
(명품 C++ 프로그래밍 CH. 11) C++ 표준 입출력 스트림 C++ 표준에서는 오직 스트림 입출력만 다룬다. 버퍼를 가지지 않는 저수준 입출력 방식을 다루지 않는다. 스트림(stream) - 프로그램과 장치를 연결하며 바이트 단위로 입출력 C++ 표준 입력 스트림 객체 : cin C++ 표준 출력 스트림 객체 : cout C++ 표준 오류 출력 스트림 객체 : cerr(버퍼 x), clog(버퍼 ㅇ) 버퍼(buffer) - 운영체제 API를 호출하여 입출력 장치와 프로그램 사이의 데이터 전송 전 버퍼에 모아두어 API 호출의 호출 횟수를 줄인다. cin 입력 스트림 버퍼 : 입력된 데이터를 프로그램에 전달하기 전에 일시 저장하는 공간 - 버퍼를 제어하는 제어키 - 입력되면 버퍼의 키들을 전달 cou..

⛅ 공공 open API 활용 - 동네의 날씨 데이터 지역에 해당하는 좌표 값을 입력하면 해당 동네의 기온과 날씨를 알려주는 프로그램 Open API 를 실습해보는 작고 간단한 프로젝트를 진행해 보았다. 멋사 조 스터디 운영진 선생님이 원하는 주제를 정해서 API 실습을 해보는 것을 과제로 내주셨다. 공공 OpenAPI 날씨 데이터 실습을 위해 내가 사용한 공공 데이터는 '공공데이터 포털'에서 사용 가능한 "기상청 동네예보 조회 서비스 API" 이다. ( 기상청 동네예보 조회 서비스 API 데이터) 기상청의 국가기후데이터센터에서 제공하는 REST API 를 활용하였다. 오픈 API의 상세 정보는 해당 사이트에서 캡처해온 다음 사진과 같다. 기상청으로부터 데이터는 아래와 같이 매일 8번 업데이트 된다. 해..
(명품 C++ 프로그래밍 Ch10) 함수 중복(function overloading) 은 편리하지만, 동일한 코드가 반복되어 중복된 함수를 여러번 정의하고 구현해내야 한다는 약점이 있다. 다음은 두 값을 서로 교환하는 myswap 함수이다. int, double 이라는 매개 변수 타입만 다르지, 알고리즘이 동일하여 동일한 코드가 반복되어 작성되었다. (swap 함수는 C++ 표준 템플릿 라이브러리에 이미 정의되어 있으므로, 이름 충돌을 피하기 위해 myswap()을 사용) // 매개변수의 타입만 다른 중복된 두 myswap 함수 void myswap(int &a, int &b){ int tmp; tmp=a; a=b; b=tmp; } void myswap(double &a, double &b){ doubl..
(명품 C++ 프로그래밍 Ch 9) 함수 재정의 (function redefine) - 함수는 파생 클래스에서 기본 클래스와 동일한 형식의 함수를 재정의하여 사용하는 것 다음과 같이 Base 기본 클래스를 상속한 파생 클래스 Derived는 Base의 멤버 함수인 f()를 재정의하여 구현하였다. class Base{ public: void f() { cout f() : "; aP->f(); coutf(); coutf(); aP = bP = cP; // 업캐스팅 cout
삽입과 삭제가 한 곳(top)에서만 이루어는 후입선출(LIFO)의 입출력 구조를 가졌던 스택(Stack)과 달리, 배열의 양 끝에서 입력과 출력이 이루어지는 큐(Queue)에 대해서 알아보자! 큐(Queue) 큐(Queue) 는 리스트의 앞 부분에서는 삭제가, 뒷 부분에서는 삽입이 이루어지는, 먼저 삽입된 자료가 먼저 삭제되는 선입선출(FIFO)의 입출력 구조로 운영된다. 다음과 같은 전단(front)과 후단(rear)이 리스트의 양 끝을 가리키게 된다. - 전단(front) : 데이터의 삭제 연산 (가장 먼저 들왔던 데이터가 쌓여있는 쪽) -> dequeue() 연산 - 후단(rear) : 데이터의 삽입 연산 (가장 나중에, 최근에 삽입된 데이터가 쌓여있는 쪽) -> enqueue() 연산 큐의 ADT..
#include #include #define MAX_STACK_SIZE 100// 스택의 크기 #define MAZE_SIZE 6// 6*6 미로 // 좌표(x,y)로 구성된 스택 typedef struct StackObjectRec { short r;// row short c;// column }StackObject; StackObject stack[MAX_STACK_SIZE];// x,y 좌표로 구성된 스택 선언 int top = -1; // top 값 초기화 StackObject here = { 1,0 };// 미로 탐색하며 이동하는 현재 위치값 StackObject entry = { 1,0 };// 미로의 시작 위치 // 미로 - 이동 가능한 경로는 '0'으로 표시, 출구는'x'로 표시 char..
연결리스트에서 head가 가리키는 값에 새로운 노드를 추가하는 구조와 스택 구조는 매우 유사하다. 첫 부분에 노드를 추가하는 (insert_first) 연결 리스트와 구조가 유사하며 top을 가리키는 포인터가 있다는 것만 조금 다르다. // 연결리스트를 이용한 스택 구조 #include #include typedef int StackObject; // Object에 대한 structure과 object를 담은 스택 typedef struct StackRec { StackObject item; // 데이터필드 struct StackRec* link; // 링크필드 : next item의 주소를 담은 포인터 }StackRec; // link 포인터를 따라가며 가장 마지막에 삽ㅇ비한 StackRec의 Obje..
(명품 C++ 프로그래밍 8장) 1. #include using namespace std; class Circle{ int radius; public: Circle(int radius=0){this->radius=radius;} int getRadius(){return radius;} void setRadius(int radius){this->radius=radius;} double getArea(){ return 3.14*radius*radius;} }; class NamedCircle:public Circle{ string name; public: NamedCircle(int radius=1, string name="circle"):Circle(radius){ this->name=name; } voi..
(명품 C++ 프로그래밍 7장) Open Challenge #include #include using namespace std; class Histogram{ string str; public: Histogram(string str){ this->str=str;} Histogram& operator
( 명품 C++ 프로그래밍 Ch8 ) 상속(Inheritance)의 개념 상속 - 자식 클래스의 객체가 생성될 때, 자신의 멤버 뿐 아니라 부모 클래스의 멤버를 포함할 것을 지시 - 기본 클래스(base class) : 부모 클래스 - 파생 클래스(derived class) : 자식 클래스 다중 상속(multiple inheritance) - 여러 개의 클래스를 동시에 상속받음 상속의 목적과 장점 - 상속을 통해 코드의 중복 작성을 없애(클래스들 사이의 중복을 제거하여) 클래스를 간결하게 구현 가능하다. - 어떤 코드에 오류가 있다면, 기본 클래스의 오류 부분만 수정하면 된다. - 서로 관련된 클래스를 계층 관계로 표현함으로써, 클래스들의 구조적인 관계 파악을 쉽게 해주며 관리가 클래스/객체의 관리가 용..
y = a * (b-c) + d/c 수식(expression)은 연산자, 피연산자, 괄호로 이루어져 있다. 연산자들은 우선순위가 있어 우선순위가 높은 연산자가 먼저 계산된다. 위의 수식에서는 괄호 내의 식이 가장 우선순위가 높기 때문에, 괄호 안의 뺄셈이 가장 먼저 계산되고, 이어서 곱셈, 나눗셈, 덧셈 순으로 계산된다. 중위표기 수식 : y=a*(b-c)+d/c 후위표기 수식(postfix notation) : y=abc-*dc/+ 프로그래머가 수식을 연산자가 피연산자 사이에 위치한 중위표기법으로 작성하면, 컴파일러는 이것을 연산자가 피연산자 뒤에 위치하는 후위표기법으로 변환한 후에 스택을 이용해 계산한다. 후위 표기법을 사용하는 이유는? 1. 괄호가 필요 없다. 괄호를 쓰지 않고도 우선 계산하여야 할..
(명품 C++ 프로그래밍 7장) 프렌드 함수 (Friend Function) friend 키워드 : 클래스 외부에 작성된 함수를 클래스 내에 선언하여, 클래스의 멤버함수와 동일한 접근 자격을 부여할 수 있도록 하는 키워드 friend 함수 : 클래스 내에 friend 키워드로 선언된 외부의 함수 - 멤버 함수는 아니므로, 상속되지는 않음 - 클래스의 멤버인 것처럼 클래스의 모든 변수나 함수에 접근 가능 - 프렌드 함수 개수에는 제한이 없음 프렌드 함수가 왜 사용될까? - 클래스의 멤버 함수로는 적합하지 안지만, 클래스의 private, protected 멤버를 접근해야 하는 특별한 경우 - 연산자 함수에서 대표적으로 사용됨 프렌드 함수를 선언하는 경우 3가지 1. 클래스 외부에 작성된 함수를 프렌드로 선..
data.txt {A[(i+1)]=0} {B[100-(i+5)]*5} {C/(5/5*(5-4)} (10+5)-(30-20) 전체 코드 : #include #include #define MAX_STACK_SIZE 100 typedef char element; typedef struct{ element data[MAX_STACK_SIZE]; int top; }StackType; void init_stack(StackType* s) { s->top = -1; } int is_empty(StackType* s) { return (s->top == -1); } int is_full(StackType* s) { return (s->top == (MAX_STACK_SIZE - 1)); } void push(Stack..
스택이란? 스마트폰, 컴퓨터에서 '뒤로 가기'(undo 기능 - Ctrl+z)와 같은 기능, 혹은 일상생활에서 볼 수 있는 책상 위에 쌓여있는 책 등과 같이 자료가 차곡차곡 쌓여있는 구조를 스택 형태의 예라 할 수 있다. 순환 호출 시, 함수가 호출될 때마다 복귀 주소가 저장되는 활성 레코드가 운영체제가 사용하는 시스템 스택에 쌓이는 것 또한 컴퓨터 내의 스택의 사용 예이다. 최근에 들어온 자료가 가장 위에 있게 되고, 먼저 나가게 되는 구조가 바로 스택이고, 이러한 입출력 형태를 후입선출(LIFO: Last-In First-Out)이라고 한다. 스택에 저장되는 데이터를 요소(element)라 부른다. 스택에서 요소에 대한 입출력이 이루어지는 부분을 스택 상단(stack top)이라 하고, 반대쪽 바닥 ..
컴퓨터 산술과 논리 연산 ALU의 구성 요소 - 산술 연산 장치: +, -, *, % 수행 - 논리 연산 장치 : 논리 연산(AND, OR, XOR, NOT 등) 수행 - 시프트 레지스터(shift register) : 비트들을 좌측, 우측으로 이동시키는 기능을 가진 레지스터 -> 플래그들 출력 - 보수기(complementer) : 2진 데이터를 2진 보수로 변환(음수화) - 상태 레지스터(status register) : 연산 결과의 상태를 나타내는 플래그(flag)들을 저장하는 레지스터 16-비트 부호화 크기 표현 +21 = 00010101 (8-비트 부호화-크기 표현) +21 = 0000000000010101 (16-비트 부호화-크기 표현) - 21 = 10010101 (8-비트 부호화-크기 표현..