
해시
해시를 사용한 집합과 맵
백준 2358번 평행선

import sys
input = sys.stdin.readline
x_coor, y_coor = {}, {} # 각각 x, y좌표 횟수를 저장
for _ in range(int(input())):
x,y = map(int,input().split())
# x좌표 세기
if x in x_coor:
x_coor[x] += 1
else:
x_coor[x] = 1
# y좌표 세기
if y in y_coor:
y_coor[y] += 1
else:
y_coor[y] = 1
count = 0 # 직선 수
for i in x_coor:
if x_coor[i] > 1:
count += 1
for i in y_coor:
if y_coor[i] > 1:
count += 1
print(count)
해시를 이용해 풀기 위해 딕셔너리를 사용했다.
핵심은 직선을 그리려면 x좌표에 같은 값이 2개 이상일 경우 그 x좌표를 지나는 세로 직선을 하나 그릴 수 있고, y좌표도 마찬가지로 y좌표에 같은 값이 2개 이상이면 가로 직선을 하나 그릴 수 있다는 점이다.

첫번째 제출한 코드와 두번째 제출한 코드의 차이는
import sys
input = sys.stdin.readline
단 이 부분이다.
저렇게 반복문으로 많은 횟수를 입력을 받을 때는, 저 코드를 통해 입력받는 것이 시간을 많이 단축할 수 있다.
한 주간 풀었던 문제들 복습하기
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL