PS

Problem Solving (알고리즘, 자료구조 문제풀이)
[PS] BOJ 34955 / 낚시 (Hard)
PS Featured

[PS] BOJ 34955 / 낚시 (Hard)

문제 링크: https://www.acmicpc.net/problem/34955 풀이 같은 내용에 출력 양식이 다른 문제 (낚시 (Easy))도 존재합니다. 풀이 또한 동일하니, 이 글에서는 Hard 버전의 풀이를 작성합니다. 낚시 조건 살펴보기 처음에 $N$개의 미끼와 $M$마리의 물고기가 있습니다. 문제에서, 우리는 미끼를 사용해 낚시를 하거나 기존에 잡은 물고기를 미끼로 바꾸는
9 min read
[PS] BOJ 2696 / 중앙값 구하기
PS Featured

[PS] BOJ 2696 / 중앙값 구하기

문제 링크: https://www.acmicpc.net/problem/2696 풀이 중앙값 찾기 어떤 수열에서 중앙값을 찾는 방법은 수 전체를 정렬하는 것입니다. 하지만, 수열에 원소를 계속 추가하면서 중앙값을 구해야 합니다. 매번 수를 추가할 때 마다 다시 정렬하는 방법은 분명 시간 초과를 받을 것이니, 더 빠른 방법을 찾아야 합니다. 매번 수를 추가할 때
4 min read
[PS] BOJ 33915 / 불꽃놀이의 아름다움 2
PS Featured

[PS] BOJ 33915 / 불꽃놀이의 아름다움 2

문제 링크: https://www.acmicpc.net/problem/33915 풀이 그래프 색칠하기 인접한 두 정점끼리 서로 다른 색으로 칠하는 규칙을 따라 전체 그래프를 칠하는 문제입니다. 이는 이분 그래프의 개념을 활용해 접근할 수 있습니다. 다만, 이분 그래프처럼 그래프의 정점이 온전히 2개의 그룹으로만 분리되지는 않습니다. 따라서 그래프 탐색 과정에서 적절히 색의 개수를 늘려가며
2 min read
[PS] BOJ 5052 / 전화번호 목록
PS Featured

[PS] BOJ 5052 / 전화번호 목록

문제 링크: https://www.acmicpc.net/problem/5052 풀이 트라이 활용하기 트라이에 관한 자세한 설명은 이전 글을 참고해주세요. 이번 문제는 전화번호를 하나의 단어로 생각해 트라이에 저장하는 방법으로 해결할 수 있습니다. 전화번호의 숫자를 한 자리 씩 트라이의 노드로 저장하고, 마지막 자리에 해당하는 노드에는 전체 전화번호를 값으로 저장합니다. 한 전화번호부의 모든 전화번호를
3 min read
[PS] BOJ 14725 / 개미굴
PS Featured

[PS] BOJ 14725 / 개미굴

문제 링크: https://www.acmicpc.net/problem/14725 트라이(Trie)의 개념을 이해하기에 좋은 문제입니다. 풀이 Trie? Trie란, 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조입니다. 문자열 자동 완성, 사전 검색 등의 기능을 구현하는데 자주 사용됩니다. Radix Tree, Prefix Tree, Retrieval Tree라고도 부릅니다. * 문자열 탐색이 빠릅니다. 전체 문자열을 하나하나 비교하면서
3 min read
[PS] BOJ 23083 / 꿀벌 승연이
PS Featured

[PS] BOJ 23083 / 꿀벌 승연이

문제 링크: https://www.acmicpc.net/problem/23083 벌집을 2차원 배열로 표현해봅시다. 풀이 벌집을 2차원 배열료 표현하기 벌집 모양을 컴퓨터 상에서 동일하게 표현할 수는 없으니, 2차원 배열로 바꿔서 표현해야 합니다. 벌집에서는 항상 오른쪽 위 / 오른쪽 아래 / 아래쪽의 3방향으로 이동하지만, 2차원 배열로 표현할 경우 조금 달라집니다. 기존 좌표를 $(r, c)$ ($r$
6 min read
[PS] BOJ 1948 / 임계 경로
PS Featured

[PS] BOJ 1948 / 임계 경로

문제 링크: https://www.acmicpc.net/problem/1948 주어진 방향 그래프에서의 최장 경로를 찾고, 그 경로를 구성하는 간선의 개수를 세는 문제입니다. 풀이 최장 경로 찾기 보통의 그래프 탐색 문제는 최단 경로를 찾지만, 이번 문제에서는 가중치의 합이 가장 큰 경로를 찾아야 합니다. 이를 최장 경로라고 부르겠습니다. 먼저 입력 데이터로 그래프를 구성해야
5 min read
[PS] BOJ 13911 / 집 구하기
PS Featured

[PS] BOJ 13911 / 집 구하기

문제 링크: https://www.acmicpc.net/problem/13911 다익스트라 알고리즘을 활용해 최단 거리를 구하는 문제입니다. 다만, 약간의 테크닉을 요구합니다. 풀이 다익스트라 알고리즘 다익스트라는 주어진 그래프에서 두 정점 사이의 최단 거리를 구하는 알고리즘입니다. 임의의 한 정점에서 시작해, 가장 거리가 가까운 정점을 찾아가며 전체 정점의 최단 거리를 갱신하는 방식으로 동작합니다. 자세한 설명은
6 min read
[PS] BOJ 1953 / 팀배분
PS Featured

[PS] BOJ 1953 / 팀배분

문제 링크: https://www.acmicpc.net/problem/1953 이분 그래프를 활용하는 문제입니다. 풀이 이분 그래프란? 서로 인접한 두 정점을 다른 색상으로 칠할 때, 전체 그래프의 모든 정점이 두 가지 색으로 표현되는 그래프를 말합니다. 그래프 탐색을 통해 그래프의 각 정점을 2가지 색상으로 칠해 주어진 그래프가 이분 그래프인지 아닌지를 알 수 있습니다.
2 min read
[PS] BOJ 1707 / 이분 그래프
PS

[PS] BOJ 1707 / 이분 그래프

문제 링크: https://www.acmicpc.net/problem/1707 주어진 그래프가 이분 그래프인지 아닌지를 판단하는 문제입니다. 이분 그래프의 개념에 대해 이해하기에 좋은 문제입니다. 풀이 이분 그래프란? 서로 인접한 두 정점을 다른 색상으로 칠할 때, 전체 그래프의 모든 정점이 두 가지 색으로 표현되는 그래프를 말합니다. 주어진 그래프가 이분 그래프인지 판단하기 이 그래프가
4 min read