Tag: algorithms

0

백준[14502] - 연구소

문제백준 14502 문제 보기 접근 방법먼저 벽을 dfs을 활용해 세운 뒤, bfs로 바이러스를 전파시켜 안전 구역을 확인한다. bfs를 한 뒤 이전 맵 상태를 되돌려와야 한다는 것을 주의한다. 코드#include <iostream> #include <queue> #include <vector> #include <utility>

0

백준[14503] - 로봇 청소기

문제백준 14503 문제 보기 접근 방법구현 문제인 것 같다. 현재 방향과 4방향의 방 검사 후 위치를 이동할 때 주의하여 풀면 문제를 풀수 있다. 4방향을 검사하여 빈 방이 있는지 확인. 빈 방이 존재한다면 방향을 바꾸고 방 청소. 빈방이 없다면 후진 실행. 코드#include <iostream> #include <cstring> us

0

백준[14501] - 퇴사

문제백준 14501 문제 보기 접근 방법진료 스케줄이 주어졌을때 선택할 수 있는 경우는 두 가지가 있다. 진료를 하던가 아니면 해당 날짜에 진료를 하지않던가 이렇게 두가지 경우에 대해서 완전 탐색을하면 정답을 출력할 수 있다. 코드#include <iostream> #include <algorithm> using namespace std;

0

백준[14500] - 테트로미노

문제백준 14500 문제 보기 접근 방법각 좌표에서 모든 방향에 대해 dfs 탐색을 진행하면 테트리스의 모양 대로 접근할 수 있다. 하지만 ㅗ 모양은 dfs로는 접근할 수 없는 모양이므로 따로 예외처리를 해주어야 한다. 코드#include <iostream> #include <algorithm> using namespace std; int

0

백준[2805] - 나무 자르기

문제백준 2805 문제 보기 접근 방법절단기의 높이를 조절하면서 내가 필요한 나무 길이보다 더 얻을 경우 절단기 높이를 줄이고 나무의 길이가 짧을 경우 절단기의 높이를 높이는 방식으로 진행한다. 코드#include <iostream> using namespace std; int M, N; int trees[1000001]; int main() {

0

백준[1654] - 랜선 자르기

문제백준 1654 문제 보기 접근 방법랜선의 길이를 계속 바꿔가면서 필요한 랜선의 갯수와 비교해 줄이거나 늘리거나 한다. 현재 길이가 x일때 얻을수 있는 랜선이 y이고 이게 내가 필요한 랜선의 갯수보다 작다면 x의 길이를 줄이고 크거나 같다면 x의 길이를 늘리는 방식이다. 코드#include <iostream> using namespace std;