알고리즘(51)
-
백준 14502번 - 연구소 c++ 풀이
인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 예를 들어, 아래와 같이 연구소가 생긴 경우를 살펴보자. 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1..
2023.07.22 -
백준 2410 C++
1. 문제 문제는 다음과 같다. 2. 풀이법 문제 분류는 dp이나 적당히 수의 특성을 살펴보면 쉽게 문제를 해결할 수 있다. 어떤 수를 멱수의 합으로 나타낼 수 있는 방법은 두가지이다. 1. 그 전수에서 1(2^0)을 더한다. 2. 1이 아닌 멱수로만 수를 표현한다. 즉, 수의 합을 "1이 포함된 집합"과 "1이 포함되지 않은 집합"으로 나누는 것이다. 홀수의 경우, (1)으로만 풀이가 가능하다. 전 수의 멱수의 합에서 1을 더하는 것을 제외하고 다른 방법으로 합을 표현할 수 있는 방법이 존재하지 않는다. 짝수의 경우, 그 전수에서 1을 더하는 경우와, 그 수를 2로 나눈 값의 경우의 수를 더하면 답을 구할 수 있다. 해당하는 짝수를 n이라고 하자. n/2를 표현하는 수가 x+y라고 했을 때, 2(x+y..
2020.04.03 -
백준 2841 C++
간단한 stack문제이다. 줄마다 stack을 형성한 후 stack의 top원소와 눌러야 하는 프렛의 번호 크기를 비교하며 프렛의 번호 크기가 더 클때까지 stack pop연산을 수행해주면 된다. 그러나 항상 stack이 아니라 queue가 더 편할지 모른다는 두려움에 deque을 쓰는 습관이 있어서, 이 문제 역시 deque을 써서 풀었다. 코드는 다음과 같다.
2020.03.30