끄적끄적 코딩
article thumbnail
[C++] 백준 1002번 터렛
알고리즘 2019. 8. 31. 17:21

(x1, y1)좌표와, (x2, y2)좌표에서 반지름이 각각 r1, r2인 원을 그릴 때 접하는 부분이 몇개인지 구하는 문제입니다. 1. 두개의 좌표가 접할 경우 ( x1 == x2 && y1 == y2 ) 1) 반지름이 동일하면 똑같은 위치에서 같은 크기의 원을 그리므로 무수한 부분을 접함 ( - 1) r1 == r2 2) 반지름이 같지 않으면 원안에 원이 있는 모양으로 접하는 부분이 없음 ( 0 ) r1 != r2 2. 두개의 좌표가 다를 경우 ( x1 != x2 || y1 != y2 ) 1) 두개의 반지름의 길이의 합보다 둘 사이의 거리가 작고, 두개의 반지름의 차보다 둘 사이의 거리보다 크면 두개의 점을 가짐 (2) r1 + r2 > d && abs(r1 - r2) > ts; while (ts--..

article thumbnail
[C++] 백준 3053번 택시 기하학
알고리즘 2019. 8. 31. 14:18

수학 문제입니다. 유클리드 기하학에서의 원의 넓이와 택시 기하학에서의 원의 넓이를 구하면 됩니다. 유클리드 기하학은 반지름(r) * 반지름(r) * 파이(π) 입니다. 택시 기하학은 반지름(r) * 반지름(r) * 2 입니다. #include #include #include #include #include #define fio ios_base::sync_with_stdio(0), cin.tie(0) #define PI 3.14159265358979323846 using namespace std; int main(int argc, char *argv[]) { double n; double euclid; double taxi; cin >> n; euclid = n * n * PI; taxi = n * n *..

article thumbnail
[C++] 백준 4153번 직각삼각형
알고리즘 2019. 8. 31. 13:53

수학문제입니다. 세 점을 입력받았을 때 직각삼각형인지 아닌지 확인하는 문제입니다. 배열에 세점을 입력받고 sort로 오름차순을 해주었습니다. 작은 두 값을 제곱한 후 더하고 큰 값을 제곱한 값과 비교해서 같으면 직각삼각형, 다르면 아니라고 판단하여서 풀었습니다. 피타고라스 정의에서 직각삼각형은 (a>b, c 일때) a^2 = b^2 + c^2의 공식을 가지는것을 참고했습니다. #include #include #include #include #include #define fio ios_base::sync_with_stdio(0), cin.tie(0) using namespace std; int main(int argc, char *argv[]) { int side[3]; while (1) { cin >> ..

article thumbnail
[C++] 백준 3009번 네 번째 점
알고리즘 2019. 8. 31. 13:23

세점이 주어졌을때 평행한 직사각형을 만들기 위해 어느 좌표에 점을 찍어야하는지 출력하는 문제입니다. 축에 평행한 직사각형이기 때문에 x좌표가 같은 점이 두개있고 y좌표가 같은 점도 두개있습니다. 그러므로 x좌표가 1개인 것을 4번째 점의 x좌표로 사용하고 마찬가지로 y좌표가 1개인 것을 4번째 점의 y좌표로 사용하면됩니다. 예제로 보면. x y 30 20 10 10 10 20 x는 30, 10, 10 y는 20, 10, 20 x는 10이 두번 나오기에 30이 4번째점 x이고 y는 20이 두번 나오기에 10이 4번째점 y입니다. #include #include #include #include #define fio ios_base::sync_with_stdio(0), cin.tie(0) using names..

article thumbnail
[C++] 백준 2217번 로프
알고리즘 2019. 8. 31. 03:01

그리디 알고리즘 문제입니다. 로프로 가장 들 수 있는 가장 큰 중량을 구하는 문제입니다. 15kg을 들 수 있는 밧줄 한개로는 최대 15kg을 들 수 있습니다. 10kg을 들 수 있는 밧줄 한개로는 최대 10kg을 들 수 있습니다. 15kg로프와, 10kg로프를 같이 사용해서는 25kg을 들 수 있어야 하지만 10kg로프는 12.5kg을 들 수 없기때문에 kg이 적은 로프에 맞춰진다고 생각할 수 있습니다. 그러므로 15kg과 10kg로프를 같이 사용하면 10 * 2이므로 20kg을 들 수 있습니다. 가장 큰 무게를 들 수 있는 로프부터 계산을 합니다. maxWeight = max(maxWeight, lope[i] * (i + 1)); = 현재 로프의 무게 * 로프의 개수 가장 큰 무게를 들 수 있는 것을..

article thumbnail
[C++] 백준 10814번 나이순 정렬
알고리즘 2019. 8. 31. 02:48

정렬 문제입니다. 200보다 작거나 같은 사람이 있으므로 벡터 배열을 201개이상 만들어줍니다. 그리고 숫자에 맞는 배열에 이름을 push_back해줍니다. sort 함수로 숫자순으로 정렬을 하고 출력해주었습니다. #include #include #include #include #include #define fio ios_base::sync_with_stdio(0), cin.tie(0) using namespace std; int main(int argc, char *argv[]) { int n; int num = 0; char s[110]; vector v[210]; cin >> n; for (int i = 0; i > num; cin >> s; v[num].push_ba..

article thumbnail
[C++] 백준 1181번 단어 정렬
알고리즘 2019. 8. 31. 01:32

정렬 문제입니다. sort함수로 글자가 짧은것 순으로 정렬하고 글자 길이가 같으면 글자순으로 정렬합니다. 그리고 erase, unique를 써서 중복을 제거한 후 차례대로 출력했습니다. #include #include #include #include #include using namespace std; bool compare(string a, string b) { if (a.size() == b.size()) { return a < b; } else { return a.size() < b.size(); } } int main(int argc, char *argv[]) { int n; char s[100]; vector v; scanf("%d", &n); for (int i = 0; i < n; ++i) ..

article thumbnail
[C++] 백준 11651번 좌표 정렬하기 2
알고리즘 2019. 8. 30. 23:08

좌표를 정렬하는 문제입니다. y를 기준으로 정렬하고 y가 같다면 x를 기준으로 정렬합니다. vector를 사용하여 값을 넣고 sort함수로 정렬을 합니다. sort함수에 3번째 인자에 함수를 넣어서 두번째 수 (y) 가 같으면 첫번째 수 (x)를 기준으로 정렬하도록 하게합니다. bool compare(paira, pairb) { if (a.second == b.second) { return a.first < b.first; } else { return a.second < b.second; } } 이렇게 정렬된 수를 차례대로 출력해서 문제를 풀었습니다.

검색 태그