문제 링크 www.acmicpc.net/problem/2650 2650번: 교차점개수 입력의 첫째 줄에는 주어진 점들의 개수가 있다. 단, 점들의 개수는 50을 넘지 않는다. 둘째 줄 이후부터는 각 줄에 모양이 같은 두 점의 위치가 네 개의 숫자로 주어지는데, 첫 번째와 두 번째 숫 www.acmicpc.net 풀이 세 직선이 한 점에서 교차하면 안되고, 원하는대로 곡선을 그릴 수 있습니다. 항상 하나의 교차점에서 두 선만 교차하므로 모든 선에 대해 $O(N^2)$으로 교차 여부를 판별하면 됩니다. 문제에서는 직사각형을 줬는데, 이를 원으로 생각하면 쉽게 풀 수 있습니다. 모든 점을 적당한 연산을 통해 원 위의 한 점으로 바꿔주고, 선을 이루는 두 점을 페어로 저장합니다. 이때 항상 좌표가 작은 점이 앞..
문제 링크 www.acmicpc.net/problem/2659 2659번: 십자카드 문제 입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다. www.acmicpc.net 풀이 가능한 모든 네 자리 수의 조합을 찾고, 4번씩 돌려서 시계수를 찾은 다음 중복을 제거해줍니다. 입력으로 들어온 시계수가 몇 번째로 작은 수인지 lower bound를 이용해 구해주면 됩니다. 정답 코드 #include #define all(x) (x).begin(), (x).end() using namespace std; vector p; int main() { int a, b, c, d; cin >> a >> b >>..
문제 링크 www.acmicpc.net/problem/2658 2658번: 직각이등변삼각형찾기 입력된 모양이 직각이등변 삼각형을 이루는 경우에는 세 꼭짓점의 위치를 출력하고, 그렇지 않은 경우에는 0을 출력한다. 각 꼭짓점의 위치를 한 줄에 두 개의 수로 출력한다. 두 수는 하나의 빈 www.acmicpc.net 풀이 가능한 모든 경우의 삼각형을 다 그려보고 입력과 같은지 비교해봅시다. 오랜만에 별 찍기 하는 느낌이 들었습니다. 가능한 모든 삼각형은 다음과 같습니다. 순서대로 go0, go1, ..., go7이며 아래 네 개의 삼각형은 위 네 개 삼각형의 조합으로 그릴 수 있습니다. 정답 코드 #include #define ft first #define sd second using namespace st..