PS [PS] BOJ 20301 / 반전 요세푸스 문제 링크: https://www.acmicpc.net/problem/20301 Thumbnail: Photo by Luiz Felipe S. C. (Unsplash) queue 계열 자료구조 연습에 항상 보이는 문제 유형입니다. 풀이 python의 경우, 내장 모듈 collections에 deque 자료구조가 사전에 구현되어 있습니다. (물론 list를 바로 사용해도 무방합니다) 이번 풀이는 내장 deque를 사용해 진행했습니다. 문제에서 \(M\)번째 사람마다
PS [PS] BOJ 4096 / 팰린드로미터 문제 링크: https://www.acmicpc.net/problem/4096 Thumbnail: Photo by Spencer Backman (Unsplash) 생각만큼 간단하지 않아서 몇차례 고전했습니다... 생각한 과정 문자열을 \(S\), 이 문자열의 길이를 \(L\)이라고 합시다. 먼저 주어진 숫자가 팰린드로미터가 맞는지 판단하기 위해 1차례 문자열의 절반 (\(L\))만큼 반복하며 양 끝을 비교합니다. 이후, 팰린드로미터가 아니라면 다시 문자열의
PS [PS] BOJ 7774 / 콘센트 문제 링크: https://www.acmicpc.net/problem/7774 Thumbnail: Photo by Ryan Quintal (Unsplash) 콘센트 규격이 두가지가 섞여 있는 동네라니... 왜 하나로 통일하지 않은 걸까요? 생각한 과정 처음에 A 단자 1개만 있고, A->B 멀티탭과 B->A 멀티탭을 받아 최대한 많은 A 단자를 만들어야 합니다. A 단자를 최대한
PS [PS] BOJ 19939 / 박 터뜨리기 문제 링크: https://www.acmicpc.net/problem/19939 Thumbnail: Photo by Michelle Garres (Unsplash) 문제를 처음 봤을 때에는 풀이가 바로 떠오르지 않았지만, 차근차근 생각해보니 간단한 형태로 풀이를 정리해낼 수 있었습니다! 생각한 과정 이해에 도움이 되지 않을까 하여, 제가 생각한 과정을 남겨두겠습니다. \(K\)개의 바구니에 \(N\)개의 박을 나눠 담는데, 각
PS [PS] BOJ 1244 / 스위치 켜고 끄기 문제 링크: https://www.acmicpc.net/problem/1244 Thumbnail: Photo by Vincent Battault (Unsplash) 아이디어는 굉장히 간단히 떠올랐는데, 이상한데서 삽질하느라 몇차례 틀렸습니다... 풀이 먼저, 스위치는 \(0\)과 \(1\) 두 가지를 가질 수 있습니다. 그냥 코드에 바로 써도 되지만, 가독성을 위해 스위치의 상태를 변경하는 함수를 별도로 분리했습니다. def turn_switch(x)
PS [PS] BOJ 23969 / 알고리즘 수업 - 버블 정렬 2 문제 링크: https://www.acmicpc.net/problem/23969 Thumbnail: Photo by Soop Kim / Unsplash 버블 정렬 알고리즘을 이해한다면 쉽게 풀이할 수 있습니다. 풀이 버블 정렬 알고리즘의 의사 코드는 문제에서 보여주니, 이를 적절히 구현하면 됩니다. 이후, 배열 내 두 수의 교환이 일어날 때 마다 교환 횟수를 세어 K에 도달할 때 버블
Life [월말정산] 25년 4월의 이야기 벌써 5월이네요. 작년에 공군에 입대한 뒤로 시간이 쭉 지나, 글을 쓰는 지금은 상병 6호봉까지 왔습니다. 그동안 군대에서 무엇을 했는가... 하면 휴식이 80%정도 되는 것 같네요 ㅎㅎ; 그래도 나름 알차게 시간을 써야지 생각을 해왔고, 그래서 이전에 해보지 못했던 다양한 것들을 시도해 보고 있습니다. 무엇을 했나요? * Proxmox로 홈서버 세팅했습니다! * 아직은 간단하게
PS [PS] BOJ 33571 / 구멍 문제 링크: https://www.acmicpc.net/problem/33571 Thumbnail: Photo by Gabriel / Unsplash 풀이 구멍이 있는 문자의 경우만 미리 딕셔너리로 기록해 두고, 딕셔너리에 키가 없는 경우는 '구멍이 없다'고 판단해 전체 개수를 세도록 구현했다. 코드 circles = { "A": 1, "a": 1, "B": 2,
PS [PS] BOJ 16139 / 인간-컴퓨터 상호작용 문제 링크: https://www.acmicpc.net/problem/16139 Thumbnail: Photo by Thanuj Mathew / Unsplash '누적 합'에 대한 이해만 있다면 그리 어렵지 않게 풀이를 떠올릴 수 있습니다. 풀이 최대 200,000자의 문자열 \(S\) 에서, 최대 200,000 번의 구간 쿼리를 수행해야 한다. 각각의 쿼리에서는 \([L, R]\) (L, R
PS [PS] BOJ 10434 / 행복한 소수 문제 링크: https://www.acmicpc.net/problem/10434 Thumbnail: Photo by The Travel Nook / Unsplash '행복한 수' 를 판별하는 과정이 바로 떠오르지 않았지만, 패턴을 고찰해 보니 쉽게 이해할 수 있었습니다! 풀이 임의의 수 \(M\)가 행복한 소수인지 판단하려면, 다음 두 가지 과정을 거치면 된다. * \(M\)이 소수인가? * \(M\
PS [PS] BOJ 32767 / 문자열 줄이기 문제 링크: https://www.acmicpc.net/problem/32767 Thumbnail: Photo by Diya Pokharel / Unsplash 처음에 브루투 포스 방식으로 풀었는데, 당연하게도 시간 초과를 맞닥뜨렸습니다.. 문제 알파벳 소문자로 구성된 길이 \(N\)의 문자열 \(S\)가 주어진다. \(S\)에 대하여 문자열 줄이기를 \(M\)번 시행한다. 문자열 줄이기의 과정은 다음과 같다. * \(S\)에 포함된
PS [PS] BOJ 1065 / 한수 문제 링크: https://www.acmicpc.net/problem/1065 Thumbnail: Photo by Lanju Fotografie / Unsplash 숫자의 범위가 작아서, 비교적 간단한 방법으로도 풀리는 문제였습니다. 문제 어떤 양의 정수 \(X\)의 각 자리가 등차수열을 이룬다면, 그 수를 한수 라고 한다. * 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. \(N\)이 주어졌을 때,
PS [PS] BOJ 32935 / 이상한 시행 문제 링크: https://www.acmicpc.net/problem/32935 난이도: 실버III 처음 맞닥뜨렸을 때는 방법이 떠오르지 않지만, 조금만 고민해보면 쉽게 풀이할 수 있는 문제였습니다. 문제 길이가 \(N\)인 수열 \(a\)가 주어진다. 다음의 시행을 원하는 만큼 하여 \(a\)의 원소들의 합을 최대로 하려한다. 그 최댓값을 구하여라. * 현재 \(a\)의 원소들의 합을
PS [PS] BOJ 14470 / 전자레인지 문제 링크: https://www.acmicpc.net/problem/14470 브론즈 IV 난이도의 간단한 문제입니다! 문제 요건에 맞게 간단한 수식으로 구현할 수 있고, 입력으로 주어지는 수 또한 -100~100 사이의 작은 범위입니다. 문제 A℃의 고기를 전자레인지로 B℃까지 데우려고 한다. 고기는 온도가 0℃보다 낮을 때 얼어 있고, 0℃보다 높을