PS

Problem Solving (알고리즘, 자료구조 문제풀이)
[PS] BOJ 8913 / 문자열 뽑기
PS

[PS] BOJ 8913 / 문자열 뽑기

문제 링크: https://www.acmicpc.net/problem/8913 Thumbnail: Photo by Finn (Unsplash) 백트래킹으로 가능한 모든 경우를 찾는 문제입니다! 풀이 백트래킹 (DFS) 백트래킹으로 가능한 모든 경우를 탐색해, 한 가지 경우라도 전체 문자열을 빈 문자열로 바꿀 수 있는지 찾아내면 됩니다. 전체 문자열의 길이는 최대 25자에 시간 제한은 2초(언어마다 조금씩 다릅니다.
4 min read
[PS] BOJ 1644 / 소수의 연속합
PS

[PS] BOJ 1644 / 소수의 연속합

문제 링크: https://www.acmicpc.net/problem/1644 Thumbnail: Photo by Ryunosuke Kikuno (Unsplash) 풀이 에라토스테네스의 체를 사용해 $N$까지의 소수를 미리 구하고, 소수들의 배열을 가지고 투 포인터 탐색을 활용해 연속 합을 구하면 됩니다. 에라토스테네스의 체 에라토스테네스의 체는 잘 알려진 소수 판별법으로, 1부터 $N$까지의 범위 안에서 소수를 일괄적으로 구할
2 min read
[PS] BOJ 4056 / 스-스-스도쿠
PS

[PS] BOJ 4056 / 스-스-스도쿠

문제 링크: https://www.acmicpc.net/problem/4056 Thumbnail: Photo by Luna Lee (Unsplash) 스도쿠를 풀어봅시다. 백트래킹으로요. 풀이 스도쿠의 규칙은 다음과 같습니다. * 같은 행에는 1~9까지의 수가 1개씩만 포함됩니다. * 같은 열에는 1~9까지의 수가 1개씩만 포함됩니다. * 같은 칸(3x3)에는 1~9까지의 수가 1개씩만 포함됩니다. 이 규칙을 기반으로, 백트래킹을 진행하면서
7 min read
[PS] BOJ 2239 / 스도쿠
PS

[PS] BOJ 2239 / 스도쿠

문제 링크: https://www.acmicpc.net/problem/2239 Thumbnail: Photo by Richard Bell (Unsplash) 스도쿠를 풀어봅시다. 백트래킹으로요. 풀이 스도쿠의 규칙은 다음과 같습니다. * 같은 행에는 1~9까지의 수가 1개씩만 포함됩니다. * 같은 열에는 1~9까지의 수가 1개씩만 포함됩니다. * 같은 칸(3x3)에는 1~9까지의 수가 1개씩만 포함됩니다. 입력으로 주어지는 스도쿠는 빈칸이 굉장히
6 min read
[PS] BOJ 10275 / 골드 러시
PS

[PS] BOJ 10275 / 골드 러시

문제 링크: https://www.acmicpc.net/problem/10725 Thumbnail: Photo by Jingming Pan (Unsplash) 이진수로 생각해보면 금방 풀 수 있었는데, 직관적으로 풀이가 떠오르지 않았어서 정리해봅니다. 풀이 문제의 번역에 살짝 오역이 있어, 마법을 사용한 횟수를 출력한다고 생각하면 됩니다. 기본적으로는, $A$ 또는 $B$ 둘 중에 아무거나 기준으로 잡고 금을 쪼개가며 해당 수를
2 min read
[PS] BOJ 1238 / 파티
PS

[PS] BOJ 1238 / 파티

문제 링크: https://www.acmicpc.net/problem/1238 Thumbnail: Photo by Adi Goldstein (Unsplash) 파티를 즐기기 위해서는 최단 거리를 구해야 합니다! 풀이 다익스트라(Dijkstra)! 다익스트라 알고리즘을 활용하는 문제입니다. 한가지 유의할 점은, 유향 그래프이기 때문에 각 학생이 사는 마을에서 파티가 열리는 $X$번 마을로 가는 거리와, $X$번 마을에서 다시 집으로
2 min read
[PS] BOJ 11404 / 플로이드
PS

[PS] BOJ 11404 / 플로이드

문제 링크: https://www.acmicpc.net/problem/11404 Thumbnail: Photo by Gerson Repreza (Unsplash) 플로이드-워셜(Floyd-Warshall) 알고리즘을 활용하는 정석적인 문제입니다. 풀이 플로이드-워셜(Floyd-Warshall)! 플로이드-워셜 알고리즘은 모든 정점에서 모든 정점으로 가는 최단 거리를 탐색하는 방법입니다. 다익스트라 알고리즘이 한 정점에서 다른 모든 정점으로의 최단 거리를 계산하는 점에서 차이가 있습니다. 모든 정점에서 모든
4 min read
[PS] BOJ 18769 / 그리드 네트워크
PS

[PS] BOJ 18769 / 그리드 네트워크

문제 링크: https://www.acmicpc.net/problem/18769 Thumbnail: Photo by Nastya Dulhiier (Unsplash) 격자 그래프에서 최소 신장 트리(MST)를 구하는 문제입니다. 풀이 기본적인 풀이 요령은 MST를 구하는 다른 문제들과 동일합니다. 다만, 정점이 번호로 주어지지 않고 격자 그래프의 형태로 주어지니, 간단한 전처리를 통해 일반적인 그래프의 형태로 저장해봅시다. 1) 간선
4 min read
[PS] BOJ 1799 / 비숍
PS

[PS] BOJ 1799 / 비숍

문제 링크: https://www.acmicpc.net/problem/1799 Thumbnail: Photo by Omar Lopez-Rincon (Unsplash) N-Queen으로 변환해 풀 수 있는 백트래킹 문제입니다. 풀이 기본적인 풀이는 N-Queen과 동일합니다. 하지만, 비숍을 어떻게 N-Queen 문제의 형태로 변환할지는 충분한 고민이 필요합니다. 아이디어 기본적인 아이디어는 아래 2가지입니다. * 체스판을 45도 회전시켜 보면, 비숍 대신 룩을 배치하는 문제로
9 min read
[PS] BOJ 10942 / 팰린드롬?
PS

[PS] BOJ 10942 / 팰린드롬?

문제 링크: https://www.acmicpc.net/problem/10942 Thumbnail: Photo by Josh Nezon (Unsplash) 문자열이 회문인지 아닌지 판단하는 문제입니다. 그러나, 전체 문자열의 임의의 부분에 대해서 회문인지 아닌지를 여러 번 판단해줘야 합니다. 풀이 이 문제를 푸시는 분들은 회문이 무엇인지 모두 아실거라고 생각합니다! 간단히 이야기하면, 문자열을 반으로 잘랐을 때 대칭인 경우 회문입니다.
3 min read
[PS] BOJ 2166 / 다각형의 면적
PS

[PS] BOJ 2166 / 다각형의 면적

문제 링크: https://www.acmicpc.net/problem/2166 Thumbnail: Photo by Joel Filipe (Unsplash) CCW를 응용해 다각형의 면적을 계산하는 문제입니다. 풀이 다각형의 면적? 다각형을 이루는 각 점의 좌표가 순서대로 주어질 때, 그렇게 만들어진 다각형의 면적을 구하는 문제입니다. 이전에 CCW 문제에서, CCW 알고리즘을 통해 유도된 식은 사선 공식과 동일하며, 이를 활용해
5 min read
[PS] BOJ 1197 / 최소 스패닝 트리
PS

[PS] BOJ 1197 / 최소 스패닝 트리

문제 링크: https://www.acmicpc.net/problem/1197 Thumbnail: Photo by Marjan Blan (Unsplash) 정석적인 최소 신장 트리(MST; Minimum Spanning Tree)를 구하는 문제입니다. 풀이 크루스칼(Kruskal) 알고리즘 MST를 구하는 알고리즘은 대표적으로 크루스칼 알고리즘과 프림 알고리즘이 존재합니다. 보통 희소 그래프의 경우 크루스칼이, 밀집 그래프의 경우 프림 알고리즘이 더 유리합니다.
1 min read