본문 바로가기

Algorithms63

백준 1004. 어린 왕자 딱 봤을 때 되게 어려워보여서 쫄았는데, 접근하는 방법만 알면 생각보다 간단했다. 요지는 원이 하나씩 주어지기 때문에, 출발점과 도착점이 하나는 원 안에, 하나는 원 밖에 있는 경우에만 카운트를 해주면 된다. n = int(input()) for i in range(n): count = 0 start_x, start_y, dest_x, dest_y = map(int, input().split()) univ = int(input()) for j in range(univ): x, y, r = map(int, input().split()) d1 = ((start_x - x)**2 + (start_y - y)**2) ** 0.5 d2 = ((dest_x - x)**2 + (dest_y - y)**2) ** 0... 2022. 6. 9.
백준 1002. 터렛 오랜만에 원의 방정식 생각하니까 어질어질하네,, 처음에는 단순히 모든 xy에서 훑으면서 양쪽 원의 방정식을 만족하는 해의 개수를 세려 했으나 모든 해가 정수는 아니기에 실패하고, 그 다음에서야 원의 거리를 이용할 방법을 생각했다. from math import sqrt n = int(input()) for i in range(n): x1, y1, r1, x2, y2, r2 = map(int, input().split()) dis = sqrt((x1 - x2)**2 + (y1 - y2)**2) if dis == 0 and r1 == r2: print(-1) elif abs(r1 - r2) == dis or r1 + r2 == dis: print(1) elif abs(r1 - r2) < dis < r1 + .. 2022. 6. 9.
백준 3053. 택시 기하학 옛날에 어떤 책에서 택시 기하학을 가볍게 접해본 것이 큰 도움이 된듯. 택시 기하학은 두 점 사이의 거리를 구할 때, 대각선이 불가능하고 꼭 상하좌우로만 계산해야 한다. 이외에는 우리가 아는 유클리드 좌표계와 같은 룰을 따른다. 따라서 원의 정의, 한 점으로부터 같은 거리만큼 떨어진 점의 집합 으로부터 택시 좌표계의 원은 네 변의 길이가 같은 마름모의 형태가 된다. 이는 변*2의 제곱을 통해 큰 사각형의 넓이를 구하고 2로 나누어서 넓이를 구할 수 있다. from math import pi n = float(input()) print('{:.6f}'.format((n**2)*pi)) print('{:.6f}'.format((n*2)**2)/2) 코드 자체는 간단하다. 2022. 6. 9.
백준 2477. 참외밭 아아아아아아 ! 너무 싫어라. 조건을 제대로 이해하지 못하고 문제를 풀어서 한없이 어려워지고 있었다가, 나중에서야 제대로 읽고 성공적으로 풀었다. 조건은 다음과 같다. ㄱ을 90. 180, 270도로 돌린 형태의 육각형이 주어진다. 동:1, 서:2, 남:3, 북:4 와 함께 변의 길이가 주어진다. 이는 반드시 반시계 방향으로 주어진다. 처음에 주어지는 1m^2당 자라는 참외의 개수와 이 도형의 넓이를 곱해서 총 생산량을 구해주면 된다. 기본적으로 최대 변을 기준으로 한 최대 사각형의 넓이 - 공백 사각형의 넓이 방법으로 푸는 것을 택했다. 그러나 3번 조건을 못봐서... 복잡하게 생각했다. 객체로 모든 변을 만들고 방향을 비교하면서 했는데, 계속 틀렸다. 저 조건을 깨닫고 나니 약간의 패턴이 보였다. 반.. 2022. 6. 9.