문제링크 : https://www.acmicpc.net/problem/8982 8982번: 수족관 1 입력의 첫 줄은 수족관의 경계에 있는 꼭짓점의 개수 N(1 ≤ N ≤ 5,000)이 주어진다. N은 짝수이다. 수족관의 경계는 항상 꼭짓점 (0, 0)부터 시작한다. 그리고 마지막 꼭짓점은 (A, 0)의 형태로 끝난 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair pii depth[400001]; //각 최대 깊이와 빠져나간 깊이 int main() { int N, M, result = 0; cin >> N; int x1, y1, x2, y2; cin >> x1 >..
문제링크 : https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { int N,R_cnt=0,B_cnt=0; string s; cin>>N>>s; for(int i=0; i
문제링크 : https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int N, M, H, a, b; int result = MAX; int arr[31][11]; //H, N int max_cnt; bool check() //i번째 선이 i번째로 돌아오는가? { for (int i = 1;..
문제링크 : https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[200001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; for(int i=0; i> arr[i]; } sort(arr, arr+N);..
문제링크 : https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[1001]; int dp[1001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; for(int i=1; i> arr[..
문제링크 : https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[101]; int visited[101]; vectorresult; void dfs(int s, int e) { if(visited[s]) //방문했다면 { if(s == e) //돌아옴 { resu..
문제링크 : https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; queue arr; for(int i=0; i> n; arr.push(n); } s..
문제링크 : https://www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int T; cin >> T; int N; int arr[10001]; while(T--) { cin >> N; ..
문제링크 : https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair vectordirection; int dx[] = {1, 0, -1, 0}; //→, ↑, ←, ↓ int dy[] = {0, -1, 0, 1}; int x, y, d, g; int arr[101][..
문제링크 : https://www.acmicpc.net/problem/10158 10158번: 개미 가로 길이가 w이고 세로 길이가 h인 2차원 격자 공간이 있다. 이 격자는 아래 그림처럼 왼쪽 아래가 (0,0)이고 오른쪽 위가 (w,h)이다. 이 공간 안의 좌표 (p,q)에 개미 한 마리가 놓여있다. 개미는 오 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int W, H, P, Q, T; cin >> W >> H >> P >> Q >> T; int N..
문제링크 : https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int T; string s; int func(int left, int right, int check) { while(left> T; while(T--) { cin >> s; cout
문제링크 : https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int N, M, K, X; //도시 갯수, 도로 갯수, 거리 정보, 출발 도시 번호 int dist[300001]; vectorv[300001]; ve..
문제링크 : https://www.acmicpc.net/problem/13398 13398번: 연속합 2 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair int arr[100001]; int dp[100001][2]; //제거하지 않은 경우와 제거한 경우 int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N, re..
문제링크 : https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net #include using namespace std; #define ll long long #define MAX 987654321 #define pii pair ll arr[1000]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; cin >> N >> M; for(..