1def calc(a1, b1, c1, a2, b2, c2):
2 if a1*b2-a2*b1 == 0:
3 return (0.1, 0.1)
4 return ((b1*c2-b2*c1)/(a1*b2-a2*b1), (c1*a2-a1*c2)/(a1*b2-a2*b1))
5
6def solution(line):
7 answer = []
8 length = len(line)
9 points = []
10 size = [1e15, -1e15, 1e15,- 1e15]
11
12 for i in range(length):
13 for j in range(i):
14 point = calc(line[i][0],line[i][1], line[i][2], line[j][0], line[j][1], line[j][2])
15 if point[0]%1 != 0 or point[1]%1 != 0:
16 continue
17 x = int(point[0])
18 y = int(point[1])
19 points.append((x, y))
20 size[0] = min(size[0], x)
21 size[1] = max(size[1], x)
22 size[2] = min(size[2], y)
23 size[3] = max(size[3], y)
24
25 answer = [['.'] * (size[1]-size[0]+1) for _ in range(size[3]-size[2]+1)]
26 for x, y in points:
27 answer[size[3]-y][x-size[0]] = '*'
28
29 return [''.join(i) for i in answer]
๋ฌธ์
- Ax + By + C = 0์ผ๋ก ํํํ ์ ์๋ n๊ฐ์ ์ง์ ์ด ์ฃผ์ด์ง๋ค
- ์ด ์ง์ ๋ค์ด ๋ง๋๋ ๊ต์ ์ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ํํํ๋ผ
- ๋น๊ณต๊ฐ์ ‘.’, ์ ์ ‘*‘๋ก ํํํ๋ค
- TC
- input
[[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]]