목록공부 (24)
누에나방애벌레
1. 중위 표기법(Infix Notation)과 후위 표기법(Postfix Notation)중위 표기법 (Infix Notation)일반적으로 우리가 사용하는 수식 표현 방식입니다. 연산자가 피연산자 사이에 위치합니다.(3 + 4) * 510 + 2 * 6후위 표기법 (Postfix Notation)후위 표기법은 연산자가 피연산자 뒤에 위치하는 표현 방식입니다.3 4 + 5 *10 2 6 * +후위 표기법은 괄호 없이도 연산자의 우선순위를 명확하게 정의할 수 있습니다. 2. Shunting Yard Algorithm의 동작알고리즘의 목적은 중위 표기법으로 된 수식을 후위 표기법으로 변환하는 것입니다. 알고리즘은 두 개의 주요 자료 구조를 사용합니다:출력 큐: 결과로 나올 후위 표기법을 저장하는 큐.연산..
1. LIS (Longest Increasing Subsequence)의 정의최장 증가 부분 수열(LIS)이란, 주어진 수열에서 몇 개의 숫자를 골라서 만들 수 있는 가장 긴 증가하는 부분 수열을 의미합니다. 단, 부분 수열은 원래 수열에서 순서를 유지해야 합니다. 예를 들어, 수열이 {6, 2, 5, 1, 7, 4, 8, 3}이라면, 이 수열에서 LIS는 {2, 5, 7, 8}로 길이가 4가 됩니다.LIS 문제는 다양한 알고리즘으로 해결할 수 있지만, 이 중 이진 탐색을 활용하여 O(N log N) 시간 복잡도로 해결하는 방법이 가장 효율적입니다.2. 문제 해결 코드아래는 LIS 문제를 해결하는 C++ 코드입니다. 이 코드는 이진 탐색을 통해 효율적으로 LIS의 길이를 구하고 실제 LIS 수열을 추적하..
2차원 배열의 회전은 컴퓨터 과학에서 자주 사용되는 개념으로, 이미지를 회전하거나 게임 보드의 상태를 바꾸는 등 다양한 응용 사례에서 사용됩니다. 이번 포스트에서는 2차원 배열을 회전시키는 방법을 살펴보겠습니다. 이 방법은 주로 시계 방향과 반시계 방향의 90도 회전에 집중합니다.2차원 배열 회전의 기본 원리2차원 배열을 회전시키는 기본 개념은 특정 규칙에 따라 배열의 요소들을 이동시키는 것입니다. 회전 방향에 따라 요소들의 위치가 변경되며, 회전의 결과로 새로운 배열이 만들어집니다. 1. 시계 방향 90도 회전 (Clockwise 90-degree Rotation)2차원 배열을 시계 방향으로 90도 회전시키면, 배열의 각 요소는 다음과 같은 규칙에 따라 새로운 위치로 이동합니다.원래 배열의 좌표: (i..
1. HTTP란?HTTP(하이퍼텍스트 전송 프로토콜, HyperText Transfer Protocol)는 월드 와이드 웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 통신 규약입니다. 이 프로토콜은 텍스트, 이미지, 비디오, JSON 등 다양한 형식의 데이터를 전송할 수 있으며, RESTful API의 기반이 됩니다.2. RESTful API 개요REST(Representational State Transfer)는 분산 시스템을 위한 소프트웨어 아키텍처 스타일로, 리소스 기반의 상호작용을 강조합니다. RESTful API는 이러한 REST 원칙을 따르는 웹 API를 의미하며, 클라이언트와 서버 간의 통신에 HTTP 메서드를 활용합니다.3. HTTP 메서드의 종류와 상세 특징3.1 GET (Fetc..
비트 연산과 비트마스킹1. 비트 연산 기본 개념1.1 AND 연산 (&)AND 연산은 두 비트가 모두 1일 때만 1을 반환합니다. 이 연산은 특정 비트를 0으로 만드는 데 유용합니다.설명: 각 비트를 비교하여 모두 1일 경우에만 1을 반환하는 연산입니다.예시: 기존 숫자에서 특정 비트를 제거하고 싶을 때 사용됩니다.int num = 0b1101; // 13 (이진수: 1101)int mask = 0b0101; // 5 (이진수: 0101)int result = num & mask; // 결과는 0b0101 (5)1.2 OR 연산 (|)OR 연산은 두 비트 중 하나라도 1이면 1을 반환합니다. 특정 비트를 1로 설정할 때 사용됩니다.설명: 둘 중 하나라도 1이면 1을 반환하는 연산입니다.예시: 특정 비트를..
배열을 회전시키는 방법에는 왼쪽 회전과 오른쪽 회전이 있습니다. 배열 회전은 배열의 요소들을 일정한 방향으로 이동시키고, 배열의 끝 요소들을 다시 시작 부분으로 이동시키는 작업입니다.i는 원래 배열의 인덱스입니다.k는 회전할 단계 수입니다.n은 배열의 길이입니다.왼쪽 회전 (Left Rotation)배열을 왼쪽으로 k만큼 회전시키면 각 요소의 새로운 위치는 (i - k + n) % n으로 계산됩니다. 오른쪽 회전 (Right Rotation)배열을 오른쪽으로 k만큼 회전시키면 각 요소의 새로운 위치는 (i + k) % n으로 계산됩니다.Code#include #include using namespace std;// 왼쪽 회전 함수void leftRotate(vector& arr, int k) { ..
1. Mermaid.live란?정의: 프로젝트 문서화 및 설계 과정에서 유용한 텍스트 기반 다이어그램 툴.특징: 간단한 코드로 복잡한 다이어그램 생성 가능.웹 애플리케이션: 실시간으로 다이어그램 생성 및 공유 가능.2. 주요 기능간단한 문법: 복잡한 그래픽 툴 없이 텍스트만으로 다이어그램 생성.다양한 다이어그램 지원: 순서도, 흐름도, 간트 차트 등 다양한 유형의 다이어그램 지원.실시간 미리보기: 작성한 코드를 즉시 시각화하여 결과 확인 가능.3. Mermaid.live의 활용1. 프로젝트 문서화설명 : 복잡한 구조나 흐름을 다이어그램으로 쉽게 설명.예시 코드 :graph TD; A[Start] --> B[Process 1]; B --> C{Decision}; C -->|Yes| D[Pr..
네이밍 케이스(naming conventions)는 코드의 가독성과 유지보수성을 높이는 중요한 요소입니다. 각 언어와 프레임워크는 특정 네이밍 규칙을 권장하거나 요구합니다. 이번 포스트에서는 다양한 네이밍 케이스를 설명하고, 주요 개발 언어 및 프레임워크에서의 사용 용도를 살펴보겠습니다.1. camelCase설명: camelCase는 각 단어의 첫 글자를 대문자로 작성하며, 첫 글자는 소문자로 시작하는 네이밍 규칙입니다. 이 네이밍 규칙은 마치 낙타의 혹처럼 보이기 때문에 camelCase라는 이름이 붙었습니다.용도:자바스크립트: 변수명, 함수명 등에서 사용됩니다.let userName = "Alice";function calculateTotalPrice(price, taxRate) { return..