<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://geb0598.github.io/</id><title>GEB0598</title><subtitle>A minimal, responsive and feature-rich Jekyll theme for technical writing.</subtitle> <updated>2025-04-01T11:47:30+00:00</updated> <author> <name>geb0598</name> <uri>https://geb0598.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://geb0598.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://geb0598.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2025 geb0598 </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>[BOJ 24794] StopCard</title><link href="https://geb0598.github.io/posts/BOJ-24794/" rel="alternate" type="text/html" title="[BOJ 24794] StopCard" /><published>2025-04-01T00:00:00+00:00</published> <updated>2025-04-01T00:00:00+00:00</updated> <id>https://geb0598.github.io/posts/BOJ-24794/</id> <content type="text/html" src="https://geb0598.github.io/posts/BOJ-24794/" /> <author> <name>geb0598</name> </author> <category term="알고리즘" /> <category term="백준" /> <summary>백준 문제 링크 🔍 문제 분석 문제에서 최종 결과는 처음 뽑는 c개의 카드에 따라서 달라진다. 처음 c개에 가장 큰 수의 카드가 포함될 경우 이 경우, 덱에있는 나머지 모든 카드를 뽑고 결과는 마지막으로 뽑은 카드가 된다. 마지막 카드는 가장 큰 수를 제외한 모든 카드가 동등한 확률로 나타난다. 따라서, 가장 큰 수를 제외한 평균을 계산한 뒤 등장 확률과 곱하여 기댓값을 계산한다. \(\frac{\binom{c-1}{n-1}}{\binom{c}{n}} \times \frac{\sum_{i=1}^{n} a_i - \max_{i=1}^{n} a_i}{n - 1}\) 처음 c개에 가장 큰 수의 카드가 포함되지 않는 ...</summary> </entry> <entry><title>[BOJ 5971] Meeting Place</title><link href="https://geb0598.github.io/posts/BOJ-5971/" rel="alternate" type="text/html" title="[BOJ 5971] Meeting Place" /><published>2025-03-31T00:00:00+00:00</published> <updated>2025-04-01T11:46:52+00:00</updated> <id>https://geb0598.github.io/posts/BOJ-5971/</id> <content type="text/html" src="https://geb0598.github.io/posts/BOJ-5971/" /> <author> <name>geb0598</name> </author> <category term="알고리즘" /> <category term="백준" /> <summary>백준 문제 링크 🔍 문제 분석 전형적인 LCA알고리즘을 이용하는 문제이다. 설명은 코드로 대신한다. 💻 코드 구현 #include &amp;amp;lt;bits/stdc++.h&amp;amp;gt; #define fastio cin.tie(0)-&amp;amp;gt;ios::sync_with_stdio(0) using namespace std; using ll = long long; using pi = pair&amp;amp;lt;int, int&amp;amp;gt;; using pll = pair&amp;amp;lt;ll, ll&amp;amp;gt;; using vi = vector&amp;amp;lt;int&amp;amp;gt;; using vvi = vector&amp;amp;lt;vector&amp;amp;lt;int&amp;amp;gt;&amp;amp;gt;; using vvll = vector&amp;amp;lt;vector&amp;amp;lt;ll&amp;amp;gt;&amp;amp;gt;; using vll = ...</summary> </entry> <entry><title>[BOJ 28964] Библиотека</title><link href="https://geb0598.github.io/posts/BOJ-28964/" rel="alternate" type="text/html" title="[BOJ 28964] Библиотека" /><published>2025-03-14T00:00:00+00:00</published> <updated>2025-03-24T01:04:39+00:00</updated> <id>https://geb0598.github.io/posts/BOJ-28964/</id> <content type="text/html" src="https://geb0598.github.io/posts/BOJ-28964/" /> <author> <name>geb0598</name> </author> <category term="알고리즘" /> <category term="백준" /> <summary>백준 문제 링크 🔍 문제 분석 문제에서는 책을 빌린 날짜 s, 책의 반납기한 e, 책을 읽는 데 걸리는 시간 f가 주어진다. 따라서, 책을 반납해야 하는 기간은 [s + f, e]이다. 책은 하루에 한 권만 반납할 수 있으므로 구간 내에 적절한 지점에서 책을 반납해서 겹치는 지점이 없도록 해야한다. 구간이 여러개 주어지므로 라인 스위핑 알고리즘을 통해서 해결할 수 있다. 먼저 구간의 시작 지점을 기준으로 오름차 순으로 정렬하며, 시작 지점이 같을 경우 끝 지점을 기준으로 오름차 순으로 정렬한다. 변수 l과 r을 유지하면서 정렬된 전체 구간을 순회한다. 이 때, l은 마지막으로 책이 반납된 시점을, r은 현재까지 확인한 구간 중 가장 큰 오른쪽 값을 의미한다. 위 그림에서 i ...</summary> </entry> <entry><title>[BOJ 13537] 수열과 쿼리 1</title><link href="https://geb0598.github.io/posts/BOJ-13537/" rel="alternate" type="text/html" title="[BOJ 13537] 수열과 쿼리 1" /><published>2025-03-14T00:00:00+00:00</published> <updated>2025-03-23T06:19:04+00:00</updated> <id>https://geb0598.github.io/posts/BOJ-13537/</id> <content type="text/html" src="https://geb0598.github.io/posts/BOJ-13537/" /> <author> <name>geb0598</name> </author> <category term="알고리즘" /> <category term="백준" /> <summary>백준 문제 링크 🔍 문제 분석 본 문제는 특정 구간이 주어졌을 때 구간 내에 k이상의 원소의 수를 구하는 문제이다. 만약, 특정 구간이 주어졌을 때 구간 내의 원소가 정렬되어 있다면 이분 탐색을 통해 O(logN)내에 k이상의 원소의 수를 구할 수 있다. 세그먼트 트리의 각 노드가 해당 구간 내의 원소를 정렬한 배열을 나타낸다고 하면, 임의의 구간에 대해서 k이상의 원소의 수를 구하는 것은 간단하다. 따라서, 세그먼트 트리를 생성하는 방법에 대해서 고민해야 한다. 세그먼트 트리는 상향식(Bottom-Up)으로 초기화되므로 정렬된 두 배열을 병합해서 새로운 정렬된 배열을 만드는 방법을 생각해야 한다. 이 방법은 병합 정렬(merge sort)를 통해서 잘 알려져있다. 자세한 내용은 코드를 ...</summary> </entry> <entry><title>[BOJ 21257] Fireworks</title><link href="https://geb0598.github.io/posts/BOJ-21257/" rel="alternate" type="text/html" title="[BOJ 21257] Fireworks" /><published>2025-03-14T00:00:00+00:00</published> <updated>2025-03-14T00:00:00+00:00</updated> <id>https://geb0598.github.io/posts/BOJ-21257/</id> <content type="text/html" src="https://geb0598.github.io/posts/BOJ-21257/" /> <author> <name>geb0598</name> </author> <category term="알고리즘" /> <category term="백준" /> <summary>백준 문제 링크 🔍 문제 분석 본 문제에서는 성공할 때까지 폭죽을 제작하고 테스트하는 과정을 반복한다. 폭죽의 개수와는 관계없이 현재 시점까지 만들어진 모든 폭죽을 테스트하는데 걸리는 시간은 m이다. 따라서, 매번 num개의 폭죽을 제작하고 테스트한다고 가정한 후 예상 시간을 최소화하는 x를 탐색한다. 테스트의 성공은 확률적으로 결정되므로 예상 시간은 테스트의 성공확률의 기댓값과 폭죽을 제작하고 테스트하는데 걸리는 시간의 곱으로 나타낼 수 있다. 이 과정은 테스트가 성공할 때까지 반복되므로 기하 분포를 따른다는 것을 알 수 있다. 수식으로 나타내면 다음과 같다. [P(X = x) = 1 - (1 - p \times 10^{-4})^x] [E(X = x) = \frac{1}{P(X = x...</summary> </entry> </feed>
