본문 바로가기

분류 전체보기

(38)
T-story 바뀐 에디터 테스트 티스토리 에디터가 바뀌었다. 에디터에서 마크다운이 지원된다고 한다. 나는 프로그래머라서, 마크다운이 지원하는 코드 블럭과 수학 표기가 여기서도 가능한지 가장 궁금했다. 예제) c++ 이용한 헬로우 (월드) #include using namespace; int main(void){ cout
동적 계획법 (DP) 과 비트 마스킹 (Bit Masking) 동적 계획법 (DP) 와 비트 마스킹 (Bit Masking) 프로그래밍 문제를 풀기 위해 비트 마스킹을 쓰실때는 비트 마스킹 자체가 일반적으로 지수 형태의 시간 복잡도와 메모리를 잡아먹기 때문에, 적은 제약조건(small constraints) 을 설정하고 쓰시는것이 좋습니다. 첫째로, 비트 마스크(Bitmask) 란 무엇인지 알아보겠습니다. 비트마스크에서 마스크(Mask) 는 뭔가를 숨긴다는 의미입니다. 비트 마스크는 어떤 무엇을 이(2)진수의 형태로 표현한 것입니다. 예를 들어보겠습니다. 어떤 집합 $A$ 는 다음과 같습니다. $A = \{1,2,3,4,5\}$. 우리는 이 집합 $A$ 를 길이가 $5$ 인 비트마스크를 이용해서 나타낼 수 있습니다. 이때 $i$ 번째 $(0\leq i \leq 4)..
Chapter 1. 컴퓨터 네트워크와 인터넷의 소개 Chapter 1. 컴퓨터 네트워크와 인터넷의 소개 인터넷의 개요 Nuts-and-Bolts and Service Views 프로토콜이란 무엇인가? 네트워크의 종류들 인터넷은 무엇일까요? 이 질문에 대답하는 방법은 여러 가지가 있습니다. 첫번째 대답은 인터넷의 Nuts 와 bolts 에 대해 기술하면 됩니다. Nuts 와 Bolts 는 인터넷을 구성하는 기본적 하드웨어 및 소프트웨어 구성요소를 말합니다. 둘째로는 인터넷은 분포되있는 어플리케이션들에게 서비스를 제공하는 정보망 기반 시스템이라고 생각할수 있다는 점입니다. 그렇다면 nuts 와 bolts 가 구체적으로 무엇인지 알아보는것으로 이 포스팅을 시작하겠습니다. 인터넷 : Nuts 그리고 Bolts 살펴보기 인터넷 용어로는, 모든 디바이스들은 호스트(..
[DP] sub-string 찾기 DP 연습 문제 : sub-string 찾기 문제 숫자로 이루어진 입력 문자열의 sub 문자열을 찾아 모두 더한 값을 출력하는 알고리즘을 작성하면 됩니다. 입력값인 숫자 $N$ 의 범위는 $1 \leq N \leq 2 \times 10^5$ 입니다. 더하는 값이 상당히 크기 때문에 sub 문자열의 합이 $T$ 라면, $T\ \% \ (10^9+7)$ 을 출력하면 됩니다. 예제 1 입력값 16 출력값 23 설명 숫자 16 의 sub 문자열은 16, 1, 그리고 6 이 있습니다. 모두 더하면 그 합은 23이 됩니다. 예제 2 입력값 123 출력값 164 설명 숫자 123 의 sub 문자열은 1, 2, 3, 12, 23, 123 이 있습니다. 모두 더하면 그 합은 164 가 됩니다. 문제를 이곳에서 풀어보세요..
트리보나치 숫자 (Tribonacci Number) Tribonacci Number : 트리보나치 숫자 피보나치 수열은 $F_n = F_{n-1} + F_{n-2}$ 와 같이 이전에 계산된 두개의 값을 이용해 새로운 값을 찾는 개념이죠. 트리보나치 수열은 피보나치 수열과 비슷한 개념으로 이전에 계산된 값이 두개가 아닌 세개의 값으로 새로운 값을 찾는 개념입니다. 쉽게 생각하면, 트리보나치는 피보나치의 세개짜리 버젼이라 생각하시면 됩니다. $$F_n = F_{n-1} + F_{n-2} + F_{n-3}, F_0 = F_1 = 0 \ and \ F_2 = 1$$ 트리보나치 숫자를 나열하면 다음과 같습니다. 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, 10609, 1951..
[DP] 집에서 값나가는 물건 훔치기 DP 연습문제 : 집에서 값나가는 물건 훔치기 흥미로운 문제입니다. DP 를 연습하시는 분에게 꼭 추천드리는 문제입니다. 문제 총 $n$ 개의 집들이 한 거리에 일렬로 있습니다. 집 안에는 각자 중요한 물건들이 있습니다. 한 도둑이 각 집에서 가장 중요한 물건들을 훔쳐서 최대의 이득을 얻으려합니다. 하지만 도둑은 전략적으로 움직이죠. 도둑은 절대로 훔친 집에서 인근한 집의 물건은 훔치지 않습니다. 왜냐면 물건이 사라진 집은 그 집의 집주인이 자기 집을 기준으로 왼쪽집과 오른쪽 집에 경고를 하기 때문에 경찰에 걸릴 수 있거든요. 도둑을 도와(?)서 물건들을 훔쳤을때 최대의 값어치가 나가게끔 해주세요. 예제: 입력값 : hval[] = {6, 7, 1, 3, 8, 2, 4} 출력값 : 19 도둑은 6, 1,..
[DP] 동물원의 닭 DP 연습문제 : 동물원의 닭 쉬운 DP 문제인데 허점을 찌르는 문제입니다. 적어도 저는 그랬네요. ㅠ 문제 동물원에 한 마리의 닭이 있습니다. 닭 한마리는 하루가 지나면 2마리의 닭을 만듭니다. 닭의 기대 수명은 6일 입니다. 동물원 관리자는 닭들을 위한 사료를 사려고 하는데 얼마만큼 사야하는지 잘 모릅니다. $n$ 일에 몇마리의 닭이 동물원에 있는지 알면 그에 적합한 사료의 양을 계산할 수 있을겁니다. 관리자를 도와주세요. (단, 처음에 한 마리 있는 닭은 $0$ 일에 태어났습니다. ) 입력값 : 첫번째 줄은 test case, 두번째 줄 부터는 날짜가 입력됩니다. 출력값 : $n$ 일 에 해당하는 살아있는 닭의 마리수 제한값 : $1
포함 배제의 원리 (Inclusion-Exclusion) 포함 배제의 원리 포함 배제의 원리는 조합, 확률, 그리고 계산에서 유용하게 쓰이는 유명한 기술입니다. $n$ 개의 집합 $A_1, A_2, \dotsc , A_n$ 들이 주어진 전체 집합 $A$ 가 있습니다. 이제 이 집합들이 가지고 있는 합집합의 원소갯수를 $S_n$ 이라 하겠습니다. 좀더 수식으로 표현하자면, $S_n = \bigg|\bigcup_{i=1}^n A_i\bigg|$ 와 같습니다. 즉, $n$ 개의 집합 $A_1, A_2, \dotsc , A_n$ 에 주어진 모든 원소들을 합집합 하여 만든 집합을 $S$ 라 한다면 그 $S$ 집합 원소들의 총 개수인 $S_n = |S|$ 를 찾는것 입니다. (집합 $A$ 에 대한 집합의 원소개수를 영어로 cardinality (카디널리티) 라고 하고 $..