한글 문서 스타일 샘플
한글로 된 글의 샘플입니다.

이 글은 스타일을 모아둔 것입니다. 소스 코드를 확인하여 스타일을 적용하는 방법을 알아보세요.


1. 제목

제목 1

제목 2

제목 3

제목 4

제목 5
제목 6

1-1. 제목 정렬

왼쪽(기본)
가운데
오른쪽

2. 본문

탄핵소추의 의결을 받은 자는 탄핵심판이 있을 때까지 링크 그 권한행사가 정지된다. 제2항과 제3항의 처분에 대하여는 굵게 법원에 제소할 수 없다. 선거와 국민투표의 공정한 관리 기울임 및 정당에 관한 사무를 처리하기 위하여 53 = 125 선거관리위원회를 둔다. 국무총리는 대통령을 보좌하며, H2O 행정에 관하여 대통령의 명을 받아 행정각부를 통할한다. 정당은 법률이 정하는 바에 의하여 밑줄 국가의 보호를 받으며, 국가는 법률이 정하는 바에 의하여 파일명 정당운영에 필요한 자금을 보조할 수 있다. 모든 국민은 종교의 자유를 가진다. 국회의원은 법률이 정하는 직을 겸할 수 없다. 감사원은 가운데 줄 세입·세출의 결산을 매년 검사하여 대통령과 차년도국회에 형광펜 그 결과를 보고하여야 한다.

3. 이미지

큰 이미지 중간 이미지 작은 이미지

3-1. 이미지 가운데 정렬

이미지 가운데 정렬

4. 인용구

나는 헌법을 준수하고 국가를 보위하며 조국의 평화적 통일과 국민의 자유와 복리의 증진 및 민족문화의 창달에 노력하여 대통령으로서의 직책을 성실히 수행할 것을 국민 앞에 엄숙히 선서합니다. 모든 국민은 통신의 비밀을 침해받지 아니한다. 국회의원은 법률이 정하는 직을 겸할 수 없다. 국회는 헌법 또는 법률에 특별한 규정이 없는 한 재적의원 과반수의 출석과 출석의원 과반수의 찬성으로 의결한다. 가부동수인 때에는 부결된 것으로 본다.

5. 리스트

순서가 없는 리스트

  • 국가원로자문회의의 조직·직무범위 기타 필요한 사항은 법률로 정한다.
  • 모든 국민은 법률이 정하는 바에 의하여 국방의 의무를 진다.
  • 탄핵소추의 의결을 받은 자는 탄핵심판이 있을 때까지 그 권한행사가 정지된다.
    1. 국회는 의원의 자격을 심사하며, 의원을 징계할 수 있다. 국가는 모성의 보호를 위하여 노력하여야 한다.
    2. 공개하지 아니한 회의내용의 공표에 관하여는 법률이 정하는 바에 의한다.
  • 국회는 의장 1인과 부의장 2인을 선출한다. 정부는 회계연도마다 예산안을 편성하여 회계연도 개시 90일전까지 국회에 제출하고, 국회는 회계연도 개시 30일전까지 이를 의결하여야 한다.

순서가 있는 리스트

  1. 대통령으로 선거될 수 있는 자는 국회의원의 피선거권이 있고 선거일 현재 40세에 달하여야 한다.
  2. 각급 선거관리위원회는 선거인명부의 작성등 선거사무와 국민투표사무에 관하여 관계 행정기관에 필요한 지시를 할 수 있다.
  3. 예비비는 총액으로 국회의 의결을 얻어야 한다. 예비비의 지출은 차기국회의 승인을 얻어야 한다.
    • 국가는 농지에 관하여 경자유전의 원칙이 달성될 수 있도록 노력하여야 하며, 농지의 소작제도는 금지된다.
    • 모든 국민은 법률이 정하는 바에 의하여 납세의 의무를 진다.
  4. 형사피의자 또는 형사피고인으로서 구금되었던 자가 법률이 정하는 불기소처분을 받거나 무죄판결을 받은 때에는 법률이 정하는 바에 의하여 국가에 정당한 보상을 청구할 수 있다.

정의 리스트

대통령은 제3항과 제4
국회의원은 그 지위를 남용하여 국가·공공단체 또는 기업체와의 계약이나 그 처분에 의하여 재산상의 권리·이익 또는 직위를 취득하거나 타인을 위하여 그 취득을 알선할 수 없다.
체포·구속·압수 또
헌법개정안은 국회가 의결한 후 30일 이내에 국민투표에 붙여 국회의원선거권자 과반수의 투표와 투표자 과반수의 찬성을 얻어야 한다.

6. 표

상단1 상단2 상단3
셀1 셀2 셀3
셀4 셀5 셀6
셀1 셀2 셀3
셀4 셀5 셀6
하단1 하단2 하단3

7. 코드 스타일

코드 하이라이팅

#container {
  float: left;
  margin: 0 -240px 0 0;
  width: 100%;
}

일반적인 코드

<div id="awesome">
  <p>This is great isn't it?</p>
</div>

이 문서는 한글 Lorem Ipsum으로 생성되었습니다.

한글 문서 가독성 테스트
한글로 된 문서의 가독성을 테스트합니다.

정당의 목적이나 활동이 민주적 기본질서에 위배될 때에는 정부는 헌법재판소에 그 해산을 제소할 수 있고, 정당은 헌법재판소의 심판에 의하여 해산된다. 모든 국민은 고문을 받지 아니하며, 형사상 자기에게 불리한 진술을 강요당하지 아니한다. 새로운 회계연도가 개시될 때까지 예산안이 의결되지 못한 때에는 정부는 국회에서 예산안이 의결될 때까지 다음의 목적을 위한 경비는 전년도 예산에 준하여 집행할 수 있다.

외국인은 국제법과 조약이 정하는 바에 의하여 그 지위가 보장된다. 헌법개정안은 국회가 의결한 후 30일 이내에 국민투표에 붙여 국회의원선거권자 과반수의 투표와 투표자 과반수의 찬성을 얻어야 한다. 대통령은 국가의 독립·영토의 보전·국가의 계속성과 헌법을 수호할 책무를 진다. 국회는 정부의 동의없이 정부가 제출한 지출예산 각항의 금액을 증가하거나 새 비목을 설치할 수 없다.

대통령은 법률안의 일

대통령은 필요하다고 인정할 때에는 외교·국방·통일 기타 국가안위에 관한 중요정책을 국민투표에 붙일 수 있다. 한 회계연도를 넘어 계속하여 지출할 필요가 있을 때에는 정부는 연한을 정하여 계속비로서 국회의 의결을 얻어야 한다. 제3항의 승인을 얻지 못한 때에는 그 처분 또는 명령은 그때부터 효력을 상실한다. 이 경우 그 명령에 의하여 개정 또는 폐지되었던 법률은 그 명령이 승인을 얻지 못한 때부터 당연히 효력을 회복한다.

  • 국무회의는 대통령·국무총리와 15인 이상 30인 이하의 국무위원으로 구성한다. 대통령은 국무총리·국무위원·행정각부의 장 기타 법률이 정하는 공사의 직을 겸할 수 없다.
  • 나는 헌법을 준수하고 국가를 보위하며 조국의 평화적 통일과 국민의 자유와 복리의 증진 및 민족문화의 창달에 노력하여 대통령으로서의 직책을 성실히 수행할 것을 국민 앞에 엄숙히 선서합니다.
  • 정당은 법률이 정하는 바에 의하여 국가의 보호를 받으며, 국가는 법률이 정하는 바에 의하여 정당운영에 필요한 자금을 보조할 수 있다. 이 헌법공포 당시의 국회의원의 임기는 제1항에 의한 국회의 최초의 집회일 전일까지로 한다.
  • 모든 국민의 재산권은 보장된다. 그 내용과 한계는 법률로 정한다. 감사원은 원장을 포함한 5인 이상 11인 이하의 감사위원으로 구성한다. 모든 국민은 고문을 받지 아니하며, 형사상 자기에게 불리한 진술을 강요당하지 아니한다.

국회의원은 국가이익

체포·구속·압수 또는 수색을 할 때에는 적법한 절차에 따라 검사의 신청에 의하여 법관이 발부한 영장을 제시하여야 한다. 다만, 현행범인인 경우와 장기 3년 이상의 형에 해당하는 죄를 범하고 도피 또는 증거인멸의 염려가 있을 때에는 사후에 영장을 청구할 수 있다. 모든 국민은 소급입법에 의하여 참정권의 제한을 받거나 재산권을 박탈당하지 아니한다. 감사원은 원장을 포함한 5인 이상 11인 이하의 감사위원으로 구성한다. 군인 또는 군무원이 아닌 국민은 대한민국의 영역안에서는 중대한 군사상 기밀·초병·초소·유독음식물공급·포로·군용물에 관한 죄중 법률이 정한 경우와 비상계엄이 선포된 경우를 제외하고는 군사법원의 재판을 받지 아니한다.

  1. 대통령은 전시·사변 또는 이에 준하는 국가비상사태에 있어서 병력으로써 군사상의 필요에 응하거나 공공의 안녕질서를 유지할 필요가 있을 때에는 법률이 정하는 바에 의하여 계엄을 선포할 수 있다.
  2. 대통령은 국민의 보통·평등·직접·비밀선거에 의하여 선출한다. 대통령은 국무회의의 의장이 되고, 국무총리는 부의장이 된다. 대통령은 국가의 독립·영토의 보전·국가의 계속성과 헌법을 수호할 책무를 진다.
  3. 국민경제의 발전을 위한 중요정책의 수립에 관하여 대통령의 자문에 응하기 위하여 국민경제자문회의를 둘 수 있다. 대법원과 각급법원의 조직은 법률로 정한다.
  4. 모든 국민은 근로의 의무를 진다. 국가는 근로의 의무의 내용과 조건을 민주주의원칙에 따라 법률로 정한다. 국가는 건전한 소비행위를 계도하고 생산품의 품질향상을 촉구하기 위한 소비자보호운동을 법률이 정하는 바에 의하여 보장한다.
  5. 국민경제자문회의의 조직·직무범위 기타 필요한 사항은 법률로 정한다. 법관은 헌법과 법률에 의하여 그 양심에 따라 독립하여 심판한다. 누구든지 체포 또는 구속의 이유와 변호인의 조력을 받을 권리가 있음을 고지받지 아니하고는 체포 또는 구속을 당하지 아니한다. 체포 또는 구속을 당한 자의 가족등 법률이 정하는 자에게는 그 이유와 일시·장소가 지체없이 통지되어야 한다.
  6. 국가는 재해를 예방하고 그 위험으로부터 국민을 보호하기 위하여 노력하여야 한다. 법률안에 이의가 있을 때에는 대통령은 제1항의 기간내에 이의서를 붙여 국회로 환부하고, 그 재의를 요구할 수 있다. 국회의 폐회중에도 또한 같다.

헌법재판소에서 법률

대한민국은 민주공화국이다. 국민경제의 발전을 위한 중요정책의 수립에 관하여 대통령의 자문에 응하기 위하여 국민경제자문회의를 둘 수 있다. 모든 국민의 재산권은 보장된다. 그 내용과 한계는 법률로 정한다. 모든 국민은 신속한 재판을 받을 권리를 가진다. 형사피고인은 상당한 이유가 없는 한 지체없이 공개재판을 받을 권리를 가진다. 대법원장은 국회의 동의를 얻어 대통령이 임명한다. 대통령은 국민의 보통·평등·직접·비밀선거에 의하여 선출한다. 정당의 목적이나 활동이 민주적 기본질서에 위배될 때에는 정부는 헌법재판소에 그 해산을 제소할 수 있고, 정당은 헌법재판소의 심판에 의하여 해산된다.

국가는 모성의 보호를 위하여 노력하여야 한다. 모든 국민은 학문과 예술의 자유를 가진다. 국가는 건전한 소비행위를 계도하고 생산품의 품질향상을 촉구하기 위한 소비자보호운동을 법률이 정하는 바에 의하여 보장한다. 국무위원은 국무총리의 제청으로 대통령이 임명한다. 국회의원은 법률이 정하는 직을 겸할 수 없다.

선거운동은 각급 선거

대통령은 헌법과 법률이 정하는 바에 의하여 공무원을 임면한다. 군사법원의 조직·권한 및 재판관의 자격은 법률로 정한다. 국가는 사회보장·사회복지의 증진에 노력할 의무를 진다. 모든 국민은 학문과 예술의 자유를 가진다. 국가는 과학기술의 혁신과 정보 및 인력의 개발을 통하여 국민경제의 발전에 노력하여야 한다. 모든 국민은 신체의 자유를 가진다. 누구든지 법률에 의하지 아니하고는 체포·구속·압수·수색 또는 심문을 받지 아니하며, 법률과 적법한 절차에 의하지 아니하고는 처벌·보안처분 또는 강제노역을 받지 아니한다. 학교교육 및 평생교육을 포함한 교육제도와 그 운영, 교육재정 및 교원의 지위에 관한 기본적인 사항은 법률로 정한다.


이 문서는 한글 Lorem Ipsum으로 생성되었습니다.

Closest pair of points with devide and conquer

Closest pair of points

https://www.acmicpc.net/problem/2261

모든 쌍을 본다?

  • devide

y축과 평행하게 직선을 그어 평면을 둘로 나눠본다. 총 세가지 경우로 나뉠 수 있다 두점이 모두 왼쪽 두점이 모두 오른쪽 양쪽에 한점씩

x의 좌표로 분할 하는게 아닌 정렬해서 인덱스 0~n-1 를 분할한다.

find start, mid / find mid+1, end 로 분리 보통은 s == e 일 경우 기저로 하지만 여기선 점과 점사이의 거리이므로 점이 2개, 혹은 3개일때까지 분할한다.

3개일 경우를 기저로 삼는 이유는 이후 분할 될 시 1개만 남기 때문. 3개가 남는 경우에는 세점 모두 각각 거리를 구해 최소값을 리턴한다.

  • conquer 분할로 얻은 거리를 서로 비교해 작은값 d를 업데이트 해간다. 여기서 key는 최소거리가 분할 mid 영역에 존재하는 경우다

즉, mid에서 부터 s 까지의 점 중 d보다 작은 점 (x1) 것이 있는지 확인필요. 있다면 반대로 mid+1 부터 e까지 중에 d보다 작은 점 (x2)이 있는지 확인. 있다면 x2-x2 거리와 d를 비교해 최소값을 유지시켜준다

example code:

for (int i = mid; i >= s; i--) {
    int dx = Math.abs(arr[i].x - arr[mid].x);
    if (ret <= dx * dx) {
        break;
    }
    for (int j = mid + 1; j <= e; j++) {
        int dx2 = Math.abs(arr[j].x - arr[i].x);
        if (ret <= dx2 * dx2) {
            break;
        }
        ret = Math.min(ret,  dist(arr[i], arr[j]));
    }
    
}

// 다른 방법으로 일단 d보다 작은 점들을 array에 넣고 y로 정렬한다. 각각의 점들이 d 보다 작다면 최소값 비교해 갱신.
/*
ArrayList<Pos> strip = new ArrayList<Pos>();
for (int i = s; i <= e; i++) {
    int w = Math.abs(arr[i].x - arr[mid].x);
    if (ret > w * w) {
        strip.add(arr[i]);
        
    }
}
strip.sort(compY);
for (int i = 0; i < strip.size(); i++) {
    for (int j = i +1; j < strip.size(); j++) {
        int dY = (strip.get(j).y - strip.get(i).y ) * (strip.get(j).y - strip.get(i).y);
        if ( dY>= ret) {
            break;
        }
        ret = Math.min(ret,  dist(strip.get(j), strip.get(i)));
    }
}*/

Appendix http://www.geeksforgeeks.org/closest-pair-of-points/

다른풀이: https://www.acmicpc.net/blog/view/25 https://www.topcoder.com/community/data-science/data-science-tutorials/line-sweep-algorithms/

가장 큰 증가 부분 수열

가장 큰 증가 부분 수열

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.

예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.

## n^2 dp LIS

lis(start) = A[start]에서 시작하는 부분 증가 수열 중 최대의 길이

A[start+1…] 부분 수열 중 A[start] 보다 큰 숫자들만 고른 부분 수열 B을 만들고 B의 재귀호출로 B의 lis를 구한다

// O(n)개의 부분 문제를 갖는다
// 하나를 해결할 때마다 O(n) 시간의 반복문을 순회하므로 전체 O(n^2) 시간 복잡도를
// 
for (int i = 1; i <= N; i++) {
    max = Math.max(max,  f(i));
}
static int f(int start) {
    int ret = memo[start];
    if (ret != -1) {
        return ret;
    }
    ret = 1;
    for (int next = start + 1; next <= N; next++) {
        if (A[start] < A[next]) {
            ret = Math.max(ret, f(next) + 1);
        }
    }
    memo[start] = ret;
    return ret;
}

i 번째 수보다 작은 수 중에서 개수가 가장 긴 개수를 찾는다

i == 30일 때 이전보다 작은 수 10, 20, 10 중 개수 가 가장 긴 경우는 2이므로 +1 해서 3이 된다.

증가 수열에 포함 되는 수 들을 찾으려면, 개수 업데이트가 일어날 시, 최대 갯수가 있었던 인덱스를 저장한다.

for (int i = 1; i < N; i++) {
    d[i] = 1;
    for (int j = 0; j <= i; j++) {
        // 자신의 현재 값보다 작으면서 갯수가 최대인 값 찾아 갱신
        if (arr[i] > arr[j] && d[i] < d[j] + 1) {
            d[i] = d[j] + 1;
            pos[i] = j;
        }
    }
    if (max < d[i]) {
        max = d[i];
        idx = i;
    }
}

pos[1] = 0
pos[2] = 0
pos[3] = 1
pos[4] = 0
pos[5] = 3

5 -> 3 -> 1 -> 0

stack 이나 재귀를 통해 수열을 trace 할 수 있다.

LIS 의 마지막값 < arr[i]: 무조건 추가

LIS 의 마지막 값 > arr[i]: LIS 를 이진탐색으로 arr[i] 보다 작은 수중 에 가장 큰수와 교체한다

A = {4 5 8 6}

1th lis에 4 추가 2th lis에 5 추가 3th lis에 8 추가 4th 6보다 작은 수 중에서 가장 큰 값과 교체, 즉 5을 6으로 교체

lis.add(arr[0]);
        
for (int i = 1; i < N; i++) {
    int last = lis.get(lis.size()-1);
    if (last < arr[i]) {
        lis.add(arr[i]);
    } else  {
        int idx = Collections.binarySearch(lis, arr[i]);
        if (idx < 0) 
            idx = -idx -1;
        lis.set(idx,  arr[i]);
    }
}

nlogn LIS with segment tree

가장 큰 증가 부분 수열

수열 A 의 크기가 N (1 <= N <= 10^6) 일 경우 lis는?

부분집합의 합

Problem

https://www.acmicpc.net/problem/1182

Summary

공집합이 아닌 부분집합 중 합이 S가 되는 부분 집합의 개수 1≤ N ≤20, |S| ≤ 1,000,000

Idea

각 원소에 대해 고르는 경우와 고르지 않는 경우가 존재

O(2^N)

private static void f(int idx, int sum) {
    if (idx == N) {
        if (sum == S) {
            ans++;
        }
        return;
    }
    f(idx + 1, sum + arr[idx]);
    f(idx + 1, sum);
}