[백준] 1485 - 정사각형 Python
·
알고리즘/기초 기하학
네 점이 주어졌을 때, 네 점을 이용해 정사각형을 만들 수 있는지 없는지 판별하는 문제다. ccw 를 이용해 한 점을 잡아 각도가 작은 순으로 정렬 후 정사각형임을 판별할 수도 있지만, 판별하는 대상이 정사각형이기 때문에, 단순정렬만 이용해도 풀이가 가능하다. 2차원 평면 상에서 정사각형은 다음과 같이 나타낼 수 있다. 정사각형을 판별하기 위해 두 가지 조건을 만족하는지 확인한다. - 네 변의 길이가 같다 - 두 대각선의 길이가 같다. 따라서 한 점을 기준으로 나머지 점들의 좌표를 시계 또는 반시계 방향으로 정렬한 뒤, 네 변의 길이와 두 대각선의 길이가 같은지 판별한다. 입력으로 받은 점들을 배열에 넣고, 점들을 x 좌표, y 좌표 순으로 정렬하고, 맨 처음 점을 기준점 p 로 놓는다. x 좌표가 가장..
[백준] 3151 - 합이 0 Python
·
알고리즘/투 포인터
https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. www.acmicpc.net N 명의 학생들의 코딩실력이 -10000부터 10000사이의 정수로 중복을 허용해 주어질 때, 3명의 합이 0 이되는 경우의 수를 구하는 문제다. 정렬 후 한 수를 고정하고, 투 포인터로 첫 번째 수까지 제외한 구간에서 나머지 두 수의 합이 -(첫번째수) 를 만족하도록 만들면 된다. 수의 중복을 허용하기 때문에 두 가지의 케이스를 생각해볼 수 있다. - 합을 0 으로 만드는 두 수가 여러 개 존재하는 ..