honey_pot

[python] 교점에 별 만들기 본문

문제 풀이

[python] 교점에 별 만들기

_tera_ 2022. 6. 23. 20:44

https://programmers.co.kr/learn/courses/30/lessons/87377


더보기

일반형 식에서의 교점

일반형 식 두개
일반형 식에서 교점 구하는 공식
이 경우 두 직선은 평행 혹은 일치

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from itertools import combinations
 
def find_interaction(line1, line2):
    a,b,e = line1
    c,d,f = line2
    deno = a*- b*# 분모
    if deno == 0# 교점 없음
        return # 통과
    x = (b*- e*d) / deno
    y = (e*- 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[0for star in stars]
    min_x = min(xs)
    max_x = max(xs)
    
    # 교점의 y좌표 최대, 최소를 구해 차이를 .의 높이로 씀
    ys = [star[1for 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]
cs

'문제 풀이' 카테고리의 다른 글

[Python] 배달  (0) 2022.06.27
[Python] 모음 사전  (0) 2022.06.27
[Python] 리트코드 4sum  (0) 2022.05.14
[python] 뉴스 클러스터링  (0) 2021.12.13
[python] 오픈채팅방  (0) 2021.11.24
Comments