본문 바로가기
알고리즘/프로그래머스

당구 연습

by 1.5볼트 2023. 3. 21.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/169198

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이런이런 1레벨에서 2레벨로 올라가다니 충분히 어려웠다
처음에 무슨 이상한 방법 다 생각해도 틀려서 풀지 못할뻔했지만 그딴 건 없다 결국 힌트는 입사각과 반사각이 같다는 것 공이 튕기는 방향으로 선을 그으면 닮음 삼각형 2개가 생긴다  밑변의 길이는 알 수 있고 각도가 같으니까 서로 비율도 일정해서 각각 cos, sin 값의 비율을 구해서 적용하면 거리도 구할 수 있다 생각보다 간단하게 끝난다

모서리에 대한 설명이 있어서 경우의 수도 생각했지만 모서리에 맞는 경우는 없었다 왜 적어놓냐 진짜

 

def solution(m, n, x1, y1, bal):
    def f(x1,y1,x2,y2):
        a=abs(y2-y1)*(x1/(x2+x1))
        if a==a*(x2/x1)==0 and x1>x2:return 10000000000
        return ((a**2+x1**2)**0.5+((a*(x2/x1))**2+x2**2)**0.5)**2+0.001
    return [int(min(f(x1,y1,x2,y2),f(m-x1,y1,m-x2,y2),f(y1,x1,y2,x2),f(n-y1,x1,n-y2,x2))) for x2,y2 in bal]

'알고리즘 > 프로그래머스' 카테고리의 다른 글

자동차 대여 기록 별 대여 금액 구하기  (0) 2023.03.26
광물 캐기  (0) 2023.03.24
우박수열 정적분  (0) 2023.03.20
게임 맵 최단거리  (0) 2023.03.19
2개 이하로 다른 비트  (0) 2023.03.18

댓글