목록Algorithm/백준 (5)
지나공 : 지식을 나누는 공간
문제 출처 : www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 일단 정답 코드는 아래와 같다. 틀렸던 코드와 원인 정리는 뒤에서 하겠다. #include #include using namespace std; long long n, m, maxTree, h; vectorv; long long getM(int mid) { long long ans = 0; for (long long tree : v) { if (tree > ..
www.acmicpc.net/problem/1063 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int map[8][8]; // r, l, b, t, rt, lt, rb, lb int dx[8] = {0, 0, +1, -1, -1, -1, +1, +1}; int dy[8] = {+1, -1, 0, 0, +1, -1, +1, -1}; char inputKy..
백준 점 모으기 문제링크 www.acmicpc.net/problem/7571 7571번: 점 모으기 첫 줄에는 격자공간의 크기와 점들의 개수를 나타내는 두 정수 N과 M이 하나의 공백을 사이에 두고 주어진다. 다음의 M줄에는 각 줄마다 격자공간내의 점의 위치를 나타내는 두 개의 정수가 하나 www.acmicpc.net 완전탐색으로 빠르게 풀면서도 뭔가 의심스러웠다... 이렇게 간단하다고..? 역시나ㅎ 시간초과였다. 찾아보니 중간값으로 해결해야 한다는데 그 이유를 기록하고자 한다, 먼저, 완전탐색으로 푼 시간 초과 코드는 아래와 같다. #include #include using namespace std; int n, m, ans; vectorv; void init() { cin >> n >> m; for ..
문제링크 : www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 주석 없는 코드 #include using namespace std; int l, p, v,i; int main() { do { i++; cin >> l >> p >> v; if (l == 0 && p == 0 && v == 0) break; int ans = (v / p) * l + min(v % p, l); cout
www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net next_permutation으로 조합을 구현했다. 주석 없는 코드 #include #include #include #include using namespace std; int main() { vector v; vectorpick; int l, c; cin >> l >> c; for (int i = 0; i > x; v.push_back(x); pick.push_back(..