반응형

언어 자료구조 알고리즘 1251

[HTML5] P 태그와 PRE 태그

P 태그와 PRE 태그 HTML에서는 단락을 표현할 때 태그를 사용합니다. 그런데 공백이 여러 개 있어도 하나의 공백으로 처리합니다. 프로그램 소스 코드를 웹 페이지에 게시하면 보는 이는 매우 불편할 것입니다. 태그는 문맥에 입력하는 그대로 화면에 표시합니다. 아직 스크린 리더에서 pre 태그를 만나면 건너뛰어 웹 접근성에 대해 고려해야 한다고 말하는 이들도 있습니다. 다음은 하노이 타워 소스 코드를 태그를 이용한 것과 태그를 이용한 것을 비교하기 위한 것입니다. 하노이 타워 - p 태크 사용 int main(void) { hanoi("A", "B", "C", 16); } void Hanoi(const char *src, const char *use, const char *dest, int n) { if(n

[HTML5] 시맨틱 태그와 CSS

시맨틱 태그와 CSS HTML5에서는 웹 페이지의 내용이 무엇을 의미하는지 파악하기 쉽게 시맨틱 태그를 제공하고 있습니다. 이는 웹 접근성을 보장하기 위해 제공하는 태그들입니다. 스크린 리더와 같은 보조 기술에서 페이지의 내용을 빠르게 분석하고 제어할 수 있습니다. 웹 페이지 맨 위에 메인 메뉴나 페이지 제목등을 나타내는 부분은 header 태그를 사용합니다. 웹 페이지 맨 아래에 저작권 표시 등은 footer 태그를 사용합니다. 빠르게 탐색하기 위해 nav 태그를 사용합니다. 페이지의 주요 내용은 section 태그를 사용합니다. 내용의 조각은 article 태그를 사용합니다. 시맨틱 태그를 적용하기 전 프로그래밍 언어 여행 책 자유로운 글 프로그래밍 언어 C언어 형식 C언어의 형식에는 기본 형식과 매..

9.4 병합 정렬(Merge Sort) [디딤돌 자료구조와 알고리즘 with C++]

9.4 병합 정렬(Merge Sort)이제 병합 정렬 알고리즘을 살펴보기로 해요. 병합 정렬은 배열을 분할한 후에 분할한 배열끼리 정렬하는 것을 반복하여 전체를 정렬하는 알고리즘입니다. 이처럼 커다란 문제를 작은 문제로 분할하고 분할한 작은 영역의 문제를 해결하면서 커다란 문제를 해결하는 알고리즘을 분할 정복(Divide And Conquer) 알고리즘이라고 말합니다. 먼저 분할하는 과정이 필요합니다. 분할하다가 원소의 개수가 1보다 작거나 같으면 분할은 끝납니다.조건(n

9.3 수식 파서 트리(Numeric Parser Tree) [디딤돌 자료구조와 알고리즘 with C++]

9.3 수식 파서 트리(Numeric Parser Tree)수식 계산기는 스택으로 만드는 방법과 파서 트리로 만드는 방법이 있습니다. 정규화를 할 수 있는 구문을 파싱(Parsing)할 때 파서 트리로 구현하면 운행 방법에 따라 원하는 결과물을 얻을 수 있습니다. 이번에는 컴파일러 개념을 도입한 수식 파서 트리를 만들어 보기로 할게요. 파서(Parser)는 파싱하는 도구를 말합니다. 그리고 파싱은 입력 문장을 분석하는 것을 말합니다. 따라서 파서는 입력 문장을 분석하여 원하는 결과물을 만드는 번역기라 할 수 있습니다. 컴파일러도 고급 언어로 작성한 소스를 분석하여 기계어로 번역하므로 내부에 파싱하는 파서가 필요합니다. 컴파일러가 컴파일하는 과정은 여러 단계로 나누며 컴파일러 종류에 따라 다릅니다. 여기에..

9.2 스택을 이용한 수식 파서 [디딤돌 자료구조와 알고리즘 with C++]

9.2 스택을 이용한 수식 파서수학에서 수식은 피연산자 사이에 연산 기호를 표기하는데 이를 중위 표기라 얘기합니다. 그런데 컴퓨터 프로그램에서 중위 표기의 수식을 계산할 때 순차적으로 수행하면 수학에서의 연산 결과가 다르게 나옵니다. 예를 들어 2+3*5의 연산은 +연산보다 *연산을 먼저하기 때문에 17이지만 순서대로 연산을 수행하면 2+3을 수행한 후에 5*5를 수행해서 25가 나옵니다. 컴퓨터 프로그램에서 제대로 수식을 계산하기 위해서는 우선 순위에 맞게 연산의 순서를 파악한 후에 계산해야 합니다. 수식을 연산 순서에 맞게 표현하는 방법 중에 연산 기호의 자식으로 피연산자를 도식하는 수식 파서 트리를 이용해서 설명해 볼게요. 2+3*5 수식에서 +연산의 피연산자는 2와 3*5의 연산 결과입니다. 그리..

9.1 힙 정렬 알고리즘 [디딤돌 자료구조와 알고리즘 with C++]

9.1 힙 정렬 알고리즘이제 힙 정렬 알고리즘을 살펴보기로 해요. 힙 정렬은 완전 이진 트리의 한 종류인 힙 트리를 이용하여 정렬하는 알고리즘입니다. 먼저 힙 트리가 무엇인지 살펴본 후에 힙 정렬 알고리즘을 알아보고 분석 및 구현해 봅시다. 힙 트리는 부모의 값이 자식의 값보다 큰 값을 보장하는 최대 힙과 작은 값을 보장하는 최소 힙이 있습니다. 최대 힙으로 표현한 힙 트리의 루트에는 가장 큰 값을 갖고 최소 힙으로 표현하면 가장 작은 값을 갖습니다. 힙 트리처럼 완전 이진 트리는 배열로 많이 표현합니다. 완전 이진 트리가 아닌 이진 트리도 배열로 표현할 수 있지만 트리의 높이가 높아지고 한 쪽으로 기울어질 수록 비어있는 공간이 많아져서 메모리 효율이 떨어집니다. 하지만 완전 이진 트리는 마지막 자료가 ..

9. 기타 이진 트리 및 분할 정복 [디딤돌 자료구조와 알고리즘 with C++]

9. 기타 이진 트리 및 분할 정복 이번에는 기타 이진 트리와 분할 정복에 관해 알아봅시다. 트리는 용도에 따라 매우 다양한 형태를 지닙니다. 여기에서는 힙 정렬 알고리즘을 소개하면서 힙 트리를 다루고 수식 계산기에 사용하는 수식 파서 트리를 살펴볼게요. 그리고 문제를 분할한 후에 작은 문제를 해결하는 과정을 통해 전체 문제를 정복해 나가는 병합 정렬 알고리즘을 살펴볼 거예요. 병합 정렬 알고리즘에서 정렬할 배열을 분리하는 부분은 재귀적인 방법을 사용할 수 있어 분할 정복 알고리즘은 재귀 알고리즘으로 분류할 수 있습니다. 힙 트리는 완전 이진 트리로 노드를 이용하여 구현하는 것보다 배열을 이용하여 구현하는 것이 효과적입니다. 여기서는 자신의 부모 인덱스와 자식 인덱스를 계산할 수 있어야 하는데 이들에 대..

8.7 장르별 도서 관리 프로그램 코드[디딤돌 자료구조와 알고리즘 with C++]

8.7 장르별 도서 관리 프로그램 코드 다음은 이번 실습에서 작성한 장르별 도서 관리 프로그램의 소스입니다. //ehglobal.h#pragma once#pragma warning(disable:4996)#include #include using namespace std; #include #include enum keydata{ NO_DEFINED,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,ESC}; //공통적으로 사용할 정적 메서드를 캡슐화한 클래스class ehglobal{public: static void clrscr();//화면을 지우는 메서드 static void timeflow(int millisecond); //원하는 시간동안 지연시키는 메서드 static int getnum()..

반응형