from itertools import combinations
def find_interaction(line1, line2):
a,b,e = line1
c,d,f = line2
deno = a*d - b*c # 분모
if deno == 0: # 교점 없음
return # 통과
x = (b*f - e*d) / deno
y = (e*c - a*f) / deno
# 정수 좌표에만 별을 그리기 때문에 정수를 판별한다
if x == int(x) and y == int(y):
return (int(x), int(y))
def solution(line):
combi = list(combinations(line,2)) # 직선들을 두개씩 짝 지어 조합리스트 만듦
stars = set() # 별 위치 저장
for c in combi: # 조합한 두 직선의 교점을 다 구함
star = find_interaction(c[0],c[1])
if star: # 정수 교점 즉,별이 존재하면 stars에 저장
stars.add(star)
# 교점의 x좌표 최대,최소를 구해 차이를 .의 너비로 씀
xs = [star[0] for star in stars]
min_x = min(xs)
max_x = max(xs)
# 교점의 y좌표 최대, 최소를 구해 차이를 .의 높이로 씀
ys = [star[1] for star in stars]
min_y = min(ys)
max_y = max(ys)
# 모든 좌표를 .으로 초기화
arr = ['.' * (max_x - min_x + 1)] * (max_y - min_y + 1)
# 저장한 좌표대로 별 그리기
for star in stars:
x,y = star
arr[max_y - y] = arr[max_y - y][:x - min_x] + '*' + arr[max_y - y][x-min_x + 1:]
return [''.join(a) for a in arr]