[백준/C++] 1002번. 터렛
문제 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 $-1$ 출력한다. www.acmicpc.net 1. 첫 번째 풀이 사고 과정 - 간단하게 조규현은 A, 백승환은 B, 마린은 마린으로 칭해보자. - A로부터 반지름이 r1인 원을, B로부터 반지름이 r2인 원을 그릴 수 있다. - 두 원은 두 점에서 만나거나, 한 점에서 만나거나, 만나지 않거나, 완전히 겹칠 수 있다. - 완전히 겹치는 경우는 A와 B의 x, y, r이 모두 같아야 성립된다. 이땐 -1을 출력한다. - x1과 x2, y1과 y2가 같지만, r1과 r2가 다르다면 0을 출력한다. - 한 점에서 만나는 경우는, r1 + r2가 A, B 사..
[알고리즘] 유클리드 알고리즘 구현하기
유클리드 알고리즘(Euclidean Algorithm)은 유클리드 호제법으로도 불리며, 두 수 a, b의 최대공약수 gcd를 구하는 방법이다. 유클리드 알고리즘의 기본 동작 원리는 간단히 다음과 같이 쓸 수 있다. 두 수 a, b가 있을 때, a를 b로 나눈 나머지를 r이라고 하면 1. a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이를 gcd(a, b) = gcd(b, r)과 같이 나타낼 수 있다. 2. gcd(a, 0) = a이다. 만약 두 수를 15와 9라고 두자. 그럼 다음과 같이 전개할 수 있다. gcd(15, 9) = gcd(9, 6) = gcd(6, 3) = gcd(3, 0) = 3 15와 9의 최대공약수인 3을 구할 수 있다. 그렇다면 이번에는 위 알고리즘을 코드로 구현해보자. 여기..