Programmers_위클리 챌린지 교점에 별 만들기
프로그래머스 위클리 챌린지 - 교점에 별 만들기 문제 입니다.
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/87377#qna
2. 분류 및 난이도
Programmers 문제입니다.
위클리 챌린지 문제 입니다.
Level 2난이도의 문제입니다.
3. 생각한 것들(문제 접근 방법)
- 구현이 좀 복잡합니다. 좌표계에서 굉장히 헷갈리는데, 교점 이동을 잘 해준다면 어렵지 않게 푸실 수 있을겁니다.
- 그리고 초기에 min,max값을 아예 높게 설정하지 않으면 28테케,29테케에서 에러가 납니다..왠지는 모름.
4. 접근 방법을 적용한 코드
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
from collections import deque
def solution(line):
INF = float('inf')
size = len(line)
result = []
max_x,max_y,min_x,min_y = -INF,-INF,INF,INF
st = set()
for i in range(size):
for j in range(i+1,size):
A,B,E = line[i]
C,D,F = line[j]
low = A*D - B*C
if low == 0:
continue
x = (B*F - E*D) / low
y = (E*C - A*F) / low
if x - int(x) or y - int(y):
continue
x = int(x)
y = int(y)
max_x = max(max_x,x)
min_x = min(min_x,x)
max_y = max(max_y,y)
min_y = min(min_y,y)
st.add((x,y))
result= list(st)
# makeMap
width = max_x - min_x + 1
height = max_y - min_y + 1
map = [['.']*width for i in range(height)]
for x,y in result:
map[max_y-y][x-min_x] = "*"
return [''.join(s) for s in map]
5. 결과
필요시. c++ 짜드리겠습니다. 설명이 필요시 댓글달아주세요.
This post is licensed under CC BY 4.0 by the author.