본문 바로가기

백준 문제풀이18

2468 : 안전 영역 (C++) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 출력한다. 비의 양이 정수만큼 내리는게 아니므로 아무 지역도 물에 잠기지 않을 수 있다. 값을 다 받으면서 제일 높은 위치 값을 확인 한 후 제일 높은 위치의 값 만큼만 확인해 보면된다. 각각 높이별로 DFS를 실행하여 안전한 영역의 수의 최대 개수를 비교하면서 구한 후 출력하면 끝. 오늘 문제 많이풀었다. #include using namespace std; #define MAX 100 int map[MAX][MA.. 2021. 2. 4.
7576 : 토마토 (C++) 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 토마토의 상태는 3가지(익은 토마토 1, 익지 않은 토마토 0, 토마토가 들어있지 않은 칸 -1)로 나타낸다. 토마토가 들어있는 곳이 있다면 바로 큐에 집어 넣는다. 큐에서 하나하나씩 꺼내 근처에 익지 않은 토마토가 있으면 1을 더한다. 반복. #include #include using namespace std; #define MAX 1000 int map[MAX][MAX]; bool visit[MAX][MAX]; queue q; int dx[4.. 2021. 2. 4.
1012 : 유기농 배추 (C++) 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 테스트 케이스가 여러개 존재 할 수 있으므로 배열 초기화를 반드시 해주어야한다. BFS방식으로 풀었다. #include #include using namespace std; #define MAX 50 int M, N, K; int map[MAX][MAX]; bool visit[MAX][MAX]; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; void bfs(int x, int y) { queue q; q.push({x, y}.. 2021. 2. 4.
1009 : 분산처리 (C++) 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a > a >> b; int result = 1; for(int j = 0; j < b; j++) { result = (result * a) % 10; } if(result == 0) { result = 10; } cout 2021. 2. 4.
10808 : 알파벳 개수 (C++) 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 뭐라 딱히 설명할게 없는 문제. #include #include using namespace std; int main() { string S; cin >> S; int result[26] = {0, }; for(int i = 0; i < S.size(); i++) { result[S[i] - 'a']++; } for(int i = 0; i < 26; i++) { printf("%d ", result[i]); } return 0; } 2021. 2. 4.
1743 : 음식물 피하기 (C++) 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ 10,000)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진 www.acmicpc.net 먼저 음식물이 떨어진 좌표값들을 입력 받은 후 DFS를 실행한다. #include using namespace std; #define MAX_VALUE 101 int N, M, K; int map[MAX_VALUE][MAX_VALUE]; bool visit[MAX_VALUE][MAX_VALUE]; int cnt = 0; int result = 0; int dx[4] = {1, -1, 0, 0}; int dy[4] = .. 2021. 2. 4.
2606 : 바이러스 (C++) 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 먼저 DFS로 푼 방식이며 인접리스트를 활용하였다. 1번 컴퓨터를 통해 감염되는 컴퓨터의 수를 출력하므로 마지막에 센 숫자에서 1을 빼준다. #include #include #include using namespace std; int cnt = 0; void dfs(int start, vector graph[], bool check[]) { check[start] = true; cnt++; for(int i = 0; i < graph[start].size(); i++.. 2021. 2. 3.
2167 : 2차원 배열의 합 (C++) 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 그냥 2차원 배열 만들어서 어디부터 어디까지 구하라는 입력값 넣으면 됨... #include using namespace std; int main() { int N, M; cin >> N >> M; int arr[N+1][M+1]; for(int i = 1; i arr[i][j]; } } int cnt; cin >> cnt; for(int k = 0; k .. 2021. 2. 3.
1100 : 하얀 칸 (C++) 1100번: 하얀 칸 체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 한 줄씩 바로바로 받자마자 탐색을 실행하여 흰색칸에 말이 있을 경우 count변수를 1씩 증가시킨다. 체스판은 줄마다 색깔의 칸이 다르므로 조건문 j변수에 i%2를 하여 흰색칸의 변화를 주었다. #include #include using namespace std; int main() { int count = 0; for(int i = 0; i > C; for(int j = i%2; j < 8; j+=2) { if.. 2021. 2. 3.