본문 바로가기

Algorithm/백준

(22)
[백준] 1261번: 알고스팟 www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net #include #include #include using namespace std; const int MAX = 10000; const int dx[] = { 0, 0, 1, -1 }; const int dy[] = { 1, -1, 0, 0 }; typedef pair P; int dist[100][100]; struct cmp { bool operator()(P a, P b) { ret..
[백준] 11724번: 연결 요소의 개수 https://www.acmicpc.net/problem/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 연결 리스트 연습하려고 푼 문제인데 매트릭스로 만들어도 무방할듯! #include #include using namespace std; class Graph { public: int N; vector adj; vector visited; Graph(int n) : N(n) { adj.resize(N); visited.resize..
[백준] 1012번: 유기농 배추 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net DFS로 푼 문제 일단 문제에 나온 것처럼 배추의 위치를 저장하는 2차원 배열을 만들고 (인덱스 범위가 넘어가는 것을 방지하기 위해 ..
[백준] 1182번: 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 전에 재귀로 풀었던 문제인데 가볍게 비트마스킹 연습할 겸 다시 풀어보았다. 근데 이 문제는 재귀로 푸는게 더 빠르네..ㅋㅋㅋㅋㅋㅋㅋㅋ #include using namespace std; int n, s; int arr[20]; int cnt = 0; void calc(int i, int sum) { if (i == n) { if (sum == s) cnt++;..
[백준] 1874번: 스택 수열 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net input으로 들어온 수열을 저장하는 큐(q), 그리고 스택(st)을 선언해서 사용했다. 숫자가 1~n까지 오름차순으로 증가하므로, for문으로 i=1~n까지 차례로 대입해준다. for문이 돌 때마다 q.front()와 st.top()을 검사하는데, 여기서 q.front()는 현재 만들어야 하는 수열의 수를 담고 있..
[백준] 5076번: Web Pages https://www.acmicpc.net/problem/5076 5076번: Web Pages Input will consist of a number of lines of HTML code, each line containing from 0 to 255 characters. The last line will contain a single # character – do not process this line. Within the text of each line will be zero or more tags. No angle bracket will b www.acmicpc.net 괄호검사와 비슷한 맥락으로 스택만 사용하면 쉽게 풀 수 있는 문제이다. 하지만 문자열 파싱이 필요하므로 훨씬 복잡해진 문제. 파..
[백준] 2304번: 창고 다각형 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 빈 칸을 사이에 두고 주어진다. L과 H는 둘 다 1 이상 1,000 이하이다. www.acmicpc.net 일단 막대 정보를 배열에 저장한 뒤, 막대를 왼쪽부터 오른쪽으로 훑으며 top보다 막대가 긴 경우 스택1에 push 해준다(다각형의 왼쪽 영역) 그 다음 이번엔 막대를 오른쪽부터 왼쪽으로 훑으며 top보다 막대가 긴 경우 스택2에 push 해준다(다각형의 오른쪽 영역) 탐색이 끝난 후, 스택1과 스택2..
[백준] 1725번: 히스토그램 https://www.acmicpc.net/problem/1725 1725번: 히스토그램 문제 히스토그램에 대해서 알고 있는가? 히스토그램은 아래와 같은 막대그래프를 말한다. 각 칸의 간격은 일정하고, 높이는 어떤 정수로 주어진다. 위 그림의 경우 높이가 각각 2 1 4 5 1 3 3이다. 이러한 히스토그램의 내부에 가장 넓이가 큰 직사각형을 그리려고 한다. 아래 그림의 빗금 친 부분이 그 예이다. 이 직사각형의 밑변은 항상 히스토그램의 아랫변에 평행하게 그려져야 한다. 주어진 히스토그램에 대해, 가장 큰 직사각형의 넓이를 구하는 프로그램을 www.acmicpc.net 스택 연습문제 어처구니 없는 실수로 시간을 많이 잡아먹은 문제이다. 스택의 top 보다 높이가 높은 경우에만 스택에 push하고 (이렇게..