본문 바로가기
728x90

알고리즘339

[python] 백준 14215 세 막대 https://www.acmicpc.net/problem/14215 14215번: 세 막대 첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다. www.acmicpc.net 문제 해결 삼각형이 만들어지는 조건에 대해서 생각해보는 문제 가장 큰 변의 길이는 다른 두변의 길이 합보다 작아야한다! 따라서 세 변이 길이를 오름차순으로 정렬 후, 앞에 두 값이 뒤에 있는 값보다 클 때 그렇지 않을 때 나눠서 계산 앞에 두 값이 뒤에 있는 값보다 클 때 세 변의 길이를 더하면 끝 그렇지 않으면 가장 긴 길이의 막대를 줄여야한다. 그 길이는 앞에 두 값의 합 -1 이다. 따라서 정답은 앞에 두 값의 합*2 -1이다. CODE import sys input = sys.stdin.readline L .. 2023. 11. 17.
[python] 백준 9063 대지 https://www.acmicpc.net/problem/9063 9063번: 대지 첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. www.acmicpc.net 문제 해결 브론즈 기하문제인 만큼 극히 제한적인 조건( 남북, 동서 방향으로 평행한 직사각형 모양)이 붙었다. 따라서 X축과 Y축으로 나누어 각 점들의 좌표를 보고 가장 큰 X좌표, 가장 작은 X좌표, 가장 큰 Y좌표 가장 작은 Y좌표를 가져와서 (가장 큰 X좌표-가장 작은 X좌표) * (가장 큰 Y좌표 - 가장 작은 Y좌표)를 구하면 된다. CODE import sys input.. 2023. 11. 16.
[python] 백준 11664 선분과 점 https://www.acmicpc.net/problem/11664 11664번: 선분과 점 첫째 줄에 선분과 점의 좌표 Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz가 주어진다. 좌표는 0보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 해결 3차원 공간에서 선분 AB와 점 C를 가장 가까운 직선을 그릴 때 2가지 경우가 나온다. 두 가지 경우를 나눠서 측정할 수 있지만 (cosin 값을 이용해 두 분류를 구분할 수 있다.) 그래도 최소 거리를 구한다는 것이 쉽지 않다. 우리는 극한을 이용해서 구할 것이다. 점 C에서 선분 AB사이의 거리를 answer라 했을 때 answer≤ min(ac, bc) 일 것이다. 선분 AB의 중심을 점 m이라 할.. 2023. 11. 15.
[python] 백준 1039 교환 https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해결 숫자 안에 서로 다른 두개의 자릿수의 숫자를 바꿔가며 K번 바꾸었을 때 가장 큰 수를 만들 경우를 찾는 문제이다. 따라서 처음에 두 자릿수의 숫자를 바꿔서 가장 큰 수가 나왔다고 K번 바꾸었을 때 가장 큰 수가 만들어진다고 할 수 없다. 즉 거의 모든 경우의 수를 다 계산해야한다. 하지만 예외가 있다. 만약 한 자리의 자릿수가 가장 큰 자릿수, 즉 맨 왼쪽에 있는 수이고 나머지 하나의 자릿 수가 0일 경우 총 숫자의 자리수가 줄어들게 된다. 이런 경우는 예.. 2023. 11. 14.
728x90