오늘의 문제 : 화살을 쏘자
Dict를 활용해 4사분면과 축 위를 구분한 후 입력값의 기울기를 구하고, 가장 많은 횟수를 출력했다.
if if if 이런 식의 풀이를 하다보면 더 좋은 풀이가 있지 않을까 항상 고민된다. 코드가 너무 길어져서 (60줄 정도 나왔다) 다른 분들의 코드를 봤는데 비슷한 거 같긴하다. 뭔가 더 뾰족한 풀이가 있으면 좋겠다!
추가) 다른 분들 풀이 중에 최대공약수로 나눠서 x,y값을 쌍으로 저장하는 코드가 가독성은 더 좋은 것 같다. 그런데 시간복잡도와 공간복잡도는 높아서 이럴 때는 어떤 코드를 선호해야할지 고민된다
import sys
n = int(sys.stdin.readline())
balloon = dict()
for _ in range(n) :
x, y = map(int, sys.stdin.readline().split())
if x != 0 and y != 0 :
slope = y/x
if x > 0 and y > 0 :
if (1, slope) not in balloon :
balloon[(1,slope)] = 1
else :
balloon[(1,slope)] += 1
elif x < 0 and y > 0 :
if (2, slope) not in balloon :
balloon[(2,slope)] = 1
else :
balloon[(2,slope)] += 1
elif x < 0 and y < 0 :
if (3, slope) not in balloon :
balloon[(3,slope)] = 1
else :
balloon[(3,slope)] += 1
else :
if (4, slope) not in balloon :
balloon[(4,slope)] = 1
else :
balloon[(4,slope)] += 1
else :
if x > 0 and y == 0 :
if "a" not in balloon :
balloon["a"] = 1
else :
balloon["a"] += 1
elif x < 0 and y == 0 :
if "b" not in balloon :
balloon["b"] = 1
else :
balloon["b"] += 1
elif x == 0 and y > 0 :
if "c" not in balloon :
balloon["c"] = 1
else :
balloon["c"] += 1
else :
if "d" not in balloon :
balloon["d"] = 1
else :
balloon["d"] += 1
print(max(balloon.values()))
가치 있는 정보 공유해주셔서 감사합니다.