반응형
풀이
- 각점의 좌표가 주어지고 x, y축에 평행하게 직선을 그릴 때 , 2개 이상의 점을 지나는 직선이 몇 개인지 구하는 문제다.
- 딕셔너리를 통해 해당 x , y 좌표를 지나는 점이 몇개몇 개 있는지 기록하였고 딕셔너리의 전체 요소를 for로 돌며 직선을 몇 개 그릴 수 있는지 세주었다.
- 주의할 점은 같은 점도 생각해야 한다는 것과 직선의 개수기 때문에 직선위의 여러 개의 점이 있다고 해서 여러 개의 직선으로 처리하면 안 된다는 점이다.
- 너무 대충 푼 감이 없지 않아 있는데 , 좀 더 짧고 간결한 풀이가 가능할 것 같다.
import sys
n = int(sys.stdin.readline())
c = {}
y = {}
check_x = []
check_y = []
for _ in range(n):
a,b = map(int , sys.stdin.readline().split(" "))
check_x.append(a)
check_y.append(b)
if a in c:
c[a].append(b)
else:
c[a] = []
if b in y:
y[b].append(a)
else:
y[b] = []
check_y = list(set(check_y))
check_x = list(set(check_x))
ans = 0
for i in check_x:
if c[i]:
ans += 1
for i in check_y:
if y[i]:
ans += 1
print(ans)
반응형
'코딩 > 백준' 카테고리의 다른 글
알고리즘 - Python / 백준 - 15686번 : 치킨 배달 (0) | 2022.03.13 |
---|---|
알고리즘 - Python / 백준 - 5555번 : 반지 (0) | 2022.03.12 |
알고리즘 - Python / 백준 - 1107번 : 리모컨 (0) | 2022.03.09 |
알고리즘 - Python / 백준 - 10026번 : 적록색약 (0) | 2022.03.09 |
알고리즘 - Python / 백준 - 2225번 : 합분해 (0) | 2022.03.03 |