목록분류 전체보기 (26)
IT's 2 EG
1. IMAP 이란? IMAP(Internet Message Access Protocol)은 응용 계층 인터넷 프로토콜 중 하나로, 원격 서버로부터 TCP/IP를 통해 이메일을 가져오는데 사용됩니다. IMAP은 온라인 모드와 오프라인 모두를 모두 지원하므로 POP3를 사용할 때와 달리 이메일 메시지를 서버에 남겨 두었다가 나중에 지울 수 있습니다. 2. imap을 통한 Gmail 수신 소스코드 import os import email import imaplib import configparser # 문자열의 인코딩 정보 추출 후, 문자열, 인코딩 얻기 def find_encoding_info(txt): info = email.header.decode_header(txt) s, encoding = info..
1. SMTP 란? SMTP(Simple Mail Transfer Protocol)는 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜 입니다. 일반적으로 TCP 25번 포트를 사용하며, 메일 서버간의 송수신뿐 아니라, 메일 클라이언트에서 메일 서버로 메일을 보낼때에도 사용되는 경우가 많습니다. 2. MIME 이란? MIME(Multipurpose Internet Mail Extensions)은 전자우편을 위한 인터넷 표준 포맷입니다. 전자 우편은 7비트 ASCII 문자를 사용하여 전송되기 때문에, 8비트 이상의 코드를 사용하는 문자나 이진파일은 MIME 포맷으로 변환되어 SMTP로 전송됩니다. 실질적으로 SMTP로 전송되는 대부분의 전자우편은 MIME 형식입니다. 3. 사전 준비 작업 1) 구글 계정 ..
1. 개요 파이썬 3.x 버전의 표준 라이브러리로 ini 파일로 이루어진 설정 파일을 읽고 쓸 수 있습니다. 크게 대분류인 section, 소분류인 option, 해당 값인 value로 구분 됩니다. 형식 예제 [SECTION] option1 = value1 option2 = value2 ... ... [Mail_info] ID = test PW = test1234 Subject = 테스트 Body = 테스트입니다. 2. 설정 파일 만들기 import configparser # ConfigParser 객체 생성 config = configparser.ConfigParser() # 세션 생성 config['Mail_info'] = {} # option, value 생성 방법 1 config['Mail_in..
1. 전체 선택자 전체 선택자는 스타일을 모든 요소에 적용할 때 사용하며, 전체 선택자로는 *(별표)를 사용한다. 2. 태그 선택자 특정 태그가 쓰인 모든 요소에 스타일을 적용하며, 전체 선택자 다음으로 많은 요소들에 스타일을 적용한다. 3. 클래스 선택자 특정 부분에만 스타일을 적용할 때 사용하는 것이 클래스 선택자이다. 클래스 선택자는 태그 대신 클래스 이름을 사용하는데, 클래스 이름 앞에는 마침표(.)를 붙인다. 4. id 선택자 클래스 선택자와 동일하네 특정 부분에만 스타일을 적용할 때 사용한다.다만, 클래스 선택자의 경우 여러번 반복 적용이 가능하지만, id 선택자의 경우 문서 내 한번만 적용이 가능하다.사용법은 클래스 선택자의 마침표(.) 대신, 샵(#) 기호를 앞에 붙인다. 5. 그룹 선택자..
1. 스타일 형식 스타일을 적용할 대상인 선택자와 적용할 사항인 속성, 속성값은 아래와 같이 표기를 한다. 2. 스타일 시트 1) 내부 스타일 시트 사용할 스타일을 문서 안에 정리한 것을 내부 스타일 시트라고 한다. 1234567891011121314151617 p{ font-size:30px; color:blueviolet; } 내부 스타일 시트 cs 2) 외부 스타일 시트 별도로 따로 저장한 스타일 정보를 외부 스타일 시트라고 하며, '.css' 파일 확장자를 가진다. 123456789101112 외부 스타일 시트 Colored by Color Scriptercs 123456 p{ font-size:30px; color:blueviolet; }cs

에라토스테네스의 체(Sieve of Eratosthenes) 고대 그리스의 수학자 에라토스테네스가 만들어 낸 비교적 작은 구간(10^8 이하)에서 소수를 빠르게 찾는 방법 입니다. 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체라고 부릅니다. 에라토스테네스의 체 소수 확인 과정 N개의 자연수를 모두 적습니다. 이 중 1을 제외한 2부터 진행을 합니다. 여기서 자기 자신을 제외한 자기자신의 배수를 제외시키면서 소수를 확인 합니다. 2의 경우 2를 소수로 지정하고, 2의 배수인 4, 6, 8, 10 등은 소수에서 제외합니다. 위와 같은 행위를 반복하여 소수를 찾습니다. 에라토스테네스의 체 예제 www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N..
유클리드 호제법이란? 2개 정수의 최대공약수를 구하는 방법 중 하나입니다. 2개의 정수 a, b (a>b) 에 대하여 a를 b로 나눈 나머지를 r이라 할때, a와 b의 최대공약수는 b와 r의 최대공약수와 같음을 활용합니다. 이 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수 입니다. 유클리드 호제법 구현 int a, b; int gcd(int a, int b) { if (b > a) swap(a, b); int r = a % b; if (r == 0) return b; else return gcd(b,r); } 유클리드 호제법 예제 www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄..

유니온 파인드란? 이름 그대로 Union 연산과 Find 연산을 지원하는 자료구조입니다. 상호 배타적(중복되지 않은) 부분집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는데 사용합니다. 유니온 파인드 연산 일반적으로 트리 형태의 자료구조로 표현하며 아래 3가지 연산을 사용합니다. - 초기화: N개의 원소가 각각 자기자신을 루토 노드로 설정합니다. - UNION 연산: 두 원소 a, b가 주어질때, 로트 노드를 동일하게 설정하여 이들이 속한 두 집합을 합칩니다. - FIND 연산: 원소 a에 대한 로트 노드를 재귀함수로 탐색을 합니다. 유니온 파인드 구현 아래와 같이 초기화, UNION, FIND 함수를 구현할 수 있습니다. const int MAX_SIZE = 1000000; int root[MAX..

세그먼트 트리란? 세그먼트 트리는 각 노드에 특정 구간의 대표값을 저장함으로써, 특정 구간에 대한 질문을 빠르게 답하는데 사용합니다. 세그먼트 트리는 완전 이진트리의 형태를 가지며 각 노드의 자식 노드는 부모 노드의 구간을 이등분한 두 개의 구간 중 한쪽 구간에 대한 정보를 가지게 됩니다. 이를 통해 세그먼트 트리를 활용한 연산은 최고 O(logN)의 시간복잡도를 가지게 됩니다. 세그먼트 트리 생성 방법 세그먼트 트리를 활용한 대표적인 문제는 특정 구간의 합을 구하는 것입니다. 아래는 0부터 9까지 N이 10인 배열에 대한 구간합을 세그먼트 트리로 구성하는 방법입니다. 1번 최상단 노드는 0부터 9까지의 구간합을 반환하도록 설정합니다. 자식노드인 2번과 3번 노드에는 1번 노드의 범위에 절반씩 분할하여 ..

플로이드-워셜 알고리즘 이란? 플로이드-워셜 알고리즘은 다이나믹 프로그래밍 접근 방식으로 그래프 상의 모든 두 정점에 대한 경로의 최단거리를 구합니다. 다익스트라 알고리즘과 달리 음수 가중치를 가지는 경로가 포함되어 있어도 최단거리를 구할 수 있습니다. 시간 복잡도는 O(V^3)을 가지며, 특정 경로 안에 무수히 많은 경로가 있을때, 중간 정점들이 각각 최단이 된다면 이를 모두 이은 경로 또한 최단이 된다는 개념을 사용합니다. 플로이드-워셜 계산 과정 다음은 예제 그래프를 통해 플로이드-워셜 알고리즘을 통해 서로 다른 두 정점의 최단거리를 구하는 방식입니다. 최초 예제 그래프의 인접한 두 정점간의 거리를 아래와 같이 이차원 배열 형태로 정의합니다. 이후, 각 정점을 중간노드로 경유해가는 과정에서 최소값을..