코딩테스트 연습 - 교점에 별 만들기
[[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, -
programmers.co.kr
나의 풀이
- 각 min값을 좌표 0으로 바꾸듯이 구하면 box가 밑에서부터 차기 때문에 뒤집어서 저장해 출력해주어야 함
import itertools
def solution(line):
dot = []
result = list(itertools.combinations(line, 2))
for line1, line2 in result:
if line1[0]*line2[1] - line1[1]*line2[0] == 0:
continue
x = (line1[1]*line2[2] - line1[2]*line2[1])/(line1[0]*line2[1] - line1[1]*line2[0])
y = (line1[2]*line2[0] - line1[0]*line2[2])/(line1[0]*line2[1] - line1[1]*line2[0])
if x == int(x) and y == int(y):
dot.append([int(x), int(y)])
h_dot = [min(x[0] for x in dot), max(x[0] for x in dot)]
w_dot = [min(x[1] for x in dot), max(x[1] for x in dot)]
box = [['.' for _ in range(h_dot[0], h_dot[1]+1)] for _ in range(w_dot[0], w_dot[1] + 1)]
for i, j in dot:
box[j-w_dot[0]][i-h_dot[0]] = '*'
answer = []
for i in box:
answer.insert(0, ''.join(i))
return answer
다른사람의 풀이
- 정수인지 아닌지 구하는 함수
value.is_integer()
- x, y = abs(y_max-b) , abs(x_min-a)로 구하면 반대로 출력되지 않음
'study > 알고리즘' 카테고리의 다른 글
[알고리즘/프로그래머스] 퍼즐 조각 채우기 (0) | 2021.12.27 |
---|---|
[알고리즘/프로그래머스] 전력망을 둘로 나누기 (0) | 2021.12.23 |
[알고리즘/프로그래머스] 비밀지도 (0) | 2021.12.17 |
[알고리즘/프로그래머스] 튜플 (0) | 2021.12.16 |
[알고리즘/프로그래머스] 숫자 문자열과 영단어 (0) | 2021.12.13 |