목록알고리즘/백준 (59)
쌓고 쌓다
https://www.acmicpc.net/problem/1275 1275번: 커피숍2 첫째 줄에 수의 개수 N과 턴의 개수 Q가 주어진다.(1 ≤ N, Q ≤ 100,000) 둘째 줄에는 처음 배열에 들어가 있는 정수 N개가 주어진다. 세 번째 줄에서 Q+2번째 줄까지는 x y a b의 형식으로 x~y까지의 합 www.acmicpc.net #include #include using namespace std; vector v; int N, Q; long long Tree[400001]; long long init(int start,int end,int node) { if (start == end) return Tree[node] = v[start]; int mid = (start + end) / 2; r..
https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net #include #include using namespace std; map m; int T, N, M; int main(void) { cin >> T; cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); while (T--) { int num; m.clear(); cin >> N; for (int i = 0; i > num;..
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net #include #include using namespace std; map m; int N, M; string str; int res = 0; int main(void) { cin >> N >> M; for (int i = 0; i > str; m.insert(pair(str, true)); } for (int i = 0; i < M..
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net #include #include using namespace std; deque dq; int N; int main(void) { cin >> N; int num; for (int i = 0; i > num; dq.push_back(make_pair(num,i+1)); // 덱에 이동해야할 수와 몇번째였는지 저장 } while (!dq.empty()..
https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net #include #include using namespace std; int V, E; int arr[401][401]; int res = 987654321; int main(void) { int a, b, c; cin >> V >> E; for (int i = 0; i > a >> b >> c; arr[a][b] = c; } for..
https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net #include #include using namespace std; int arr[10001]; int dp[10001]; int N; int main(void) { cin >> N; for (int i = 1; i > arr[i]; for (int i = 1; i
https://www.acmicpc.net/problem/12852 12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net #include #include using namespace std; int N; int dp[1000001]; int before[1000001]; int main(void) { cin >> N; dp[1] = 0; //1을 만들기위해선 아무 연산을 안해도 됨. before[1] = 0; for ( int i = 2; i dp[i/3]+1) { dp[i] = dp[i / 3] + 1; before[i] = i / 3; } if (i % 2 == 0 && dp[i] > dp[i / 2] + 1) { d..
https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net #include #include #include using namespace std; queue q; int N, M; int arr[500][500]; bool visit[500][500]; int side[4][2] = { {-1,0},{1,0},{0,-1},{0,1} }; int cnt = 0, area = 0; void solve() { for(int i=0;i= 0 && ny >= 0 && n..