본문 바로가기

분류 전체보기69

[백준] 14502번 - 연구소 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 연구소에 벽 3개를 세웠을 때 바이러스가 퍼지지 않은 안전 영역 크기의 최댓값을 구하는 문제이다. 우선 입력으로 주어지는 N x M 크기의 연구소를 이중 배열에 담는다. 요구하는 답을 찾기 위해서는 다음 일련의 과정을 거쳐 탐색을 실시해야한다. i) 연구소 내부의 1x1 구획 공간 중 값 0을 갖는 방들 중 3개에 벽을 세운다. ii) i)에서 벽 3개를 세웠을 때의 연구소에 대하여 바이러스가 퍼진 상황을 가정한다. iii) ii)에서 연구소에 남은 빈칸의 수(값이 0)를 세.. 2023. 5. 11.
[백준] 13913번 - 숨바꼭질4 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 이전에 풀이한 백준 1697번 숨바꼭질 문제에 조건이 하나 붙은 문제이다. [백준] 1697번 - 숨바꼭질 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이 stonage.tistory.com 기존에는 동생을 찾는 가장 빠른 시간만을 출력하면 됐었는데,.. 2023. 5. 11.
[백준] 1697번 - 숨바꼭질 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 특정 시점에서 수빈이의 위치가 X일 때, 수빈이가 1초 후에 이동할 수 있는 위치는 X-1, X+1, X*2 세군데이다. 0부터 100000까지의 정수를 각각 정점으로 보고 특정 수 X 기준 X-1, X+1, X*2를 방문처리하면서 시간을 1초씩 증가시키며 정점을 순회하는 방식으로 접근하면 문제를 해결할 수 있다. 이때 BFS를 사용하여 도달하는데 걸리는 최소 시간이 작은 위치먼저 방문처리를 한다. 수빈이의 시작 위치가 5이고, 동생의.. 2023. 5. 11.
[백준] 2667번 - 단지번호붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 이전에 해결한 11724번 문제 '연결 요소의 개수' 문제와 유사하다. [백준] 11724번 - 연결 요소의 개수 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) stonage.tistory.com 정사각형 모양의 지도의 각 1x1구획에 하나의 집이 있을 수도 .. 2023. 5. 10.
[백준] 11724번 - 연결 요소의 개수 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제에 풀이에 앞서 그래프에 대한 정리가 잘 되어 있는 글을 저장해 두겠다. [Algorithm] 자료구조 그래프(Graph)란 무엇인가? 그래프란? 그래프는 정점과 간선으로 이루어진 자료구조입니다. 정확히는 정점(Vertex)간의 관계를 표현하는 조직도라고 볼수도 있겠습니다. 그런면에서 트리는 그래프의 일종인 셈입니다. 다만 coding-factory.tistory.com i) 방향이 없는 그래프 i.. 2023. 5. 9.
[백준] 2293번 - 동전1 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 백준의 다른 문제인 1, 2, 3 더하기 4 문제와 같은 논리를 적용하면 된다. [백준] 15989번 - 1, 2, 3 더하기 4 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1 stonage.tistory.com 문제 조건을 살펴보면 주어지는 n가지 종류의 동전을 사용하여 가치의 합이 .. 2023. 5. 9.
[백준] 15989번 - 1, 2, 3 더하기 4 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 사실 이 문제를 접하기 이전에 동전1 문제를 접했기 때문에 같은 논리를 적용하여 금방 해결할 수 있었다. 전체 코드는 맨 아래에... [백준] 2293번 - 동전1 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.n.. 2023. 5. 9.
[백준] 11054번 - 가장 긴 바이토닉 부분 수열 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 아직 리뷰를 쓰진 않았지만 가장 긴 증가하는 부분 수열 LIS(Longest Increasing Subsequence)을 구하는 문제를 해결했었다. 이번 문제는 가장 긴 바이토닉 부분 수열의 길이를 구하는 것으로, 문제에 주어진 '바이토닉 부분 수열'이란 i) 계속 증가하는 부분 수열 ii) 증가하다가 특정 고점을 기준으로 감소하는 부분 수열 iii) 계속 감소하는 부분 수열 위 세 경우를 모두 포함한다. 이전에 Top-Down 방식으로 해결한 LIS 문제의 경우 주어진 배열 A에서.. 2023. 5. 6.
[백준] 11052번 - 카드 구매하기 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 카드를 N개 구매하였을 때 지불해야 하는 금액의 '최댓값'을 구하는 문제이다. 카드 N개를 구매하는 모든 경우의 수를 고려하되, 한 번 계산한 결과를 메모제이션 하는 다이나믹 프로그래밍을 사용하여 처리 시간을 줄인다. N = 3인 경우를 살펴보자. 3개의 카드를 구매하는 경우의 수는 *1개가 포함된 카드팩 P1을 3개 구매하는 경우 *2개가 포함된 카드팩 P2 1개와 1개가 포함된 카드팩 P1 1개를 구매하는 경우 3개가 포함된 카드팩 P3 1개를 구매하는 경우 세 가지.. 2023. 5. 1.