Bonfire

99클럽 코테 스터디 23일차 TIL leetcode minimum-lines-to-represent-a-line-char 본문

알고리즘/99 코테 스터디

99클럽 코테 스터디 23일차 TIL leetcode minimum-lines-to-represent-a-line-char

pecan 2024. 6. 21. 05:21

나의 접근사고

핵심 아이디어 : 한 점에서 다른 점으로 오름차순으로 이동하면서, 기울기가 바뀔때마다 선을 새로 그어야한다

나는 고등학교 때 공부했던 단위벡터를 구해서 하려다 소수점까지 나오면 복잡해지므로, 현재와 다음 점 사이의 벡터를 구한뒤 둘의 최대공약수로 나눠 소수로 이루어진 벡터를 구하고 비교했다. 

나의 코드

class Solution:
    def minimumLines(self, stockPrices: List[List[int]]) -> int:
        stockPrices.sort(key=lambda x: x[0])
        if len(stockPrices)==1:
            return 0
        answer=1
        def gcd(a,b):
            while b:
                a,b=b,a%b
            return a
        def same_incl(a,b,c):
            x1,y1=a
            x2,y2=b
            x3,y3=c
            g1=gcd(x2-x1,y2-y1)
            g2=gcd(x3-x2,y3-y2)
            if (x2-x1)//g1==(x3-x2)//g2 and (y2-y1)//g1==(y3-y2)//g2:
                return True
            return False
        for i in range(len(stockPrices)-2):
            if not same_incl(stockPrices[i],stockPrices[i+1],stockPrices[i+2]):
                answer+=1
        return answer

블로깅에 대한 회고

최근에 다른 코테 스터디를 진행한 사람들의 블로그를 공유해줘서 탐방을 해보았는데, 다들 정성이 많이 들어간 글을 썼던 것 같다. 나도 글을 잘 쓰고 싶고, 깔끔하게 정리하고 싶은데, 생각보다 쉽지가 않다. 그래도 꾸준히 조금씩 내 스타일을 찾아 기록하는 습관을 들이고, 지금은 다른 더 중요한 공부 때문에 너무 바빠 자세히 쓸 시간이 없지만, 조금의 여유가 생기면, 지식을 쌓으면서 알아낸 부분을 공유하는 방향으로 써보려고 한다.

코드에 대한 회고

나는 효율성보다는 이해와 가독성(?)에 중점을 둔 코드를 짜는 것 같다.

코테는 효율성이 우선이라, 시간을 더들여서 코드를 간략하게 짜는 법을 익혀두는 것도 시간 절약에 도움이 될 것 같다.