https://school.programmers.co.kr/learn/courses/30/lessons/169198
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
당구공 2개로 원쿠션을 연습한다.
당구공을 벽에 한번 맞힌 후 공을 맞춰야 한다.
공이 굴러간 거리의 제곱의 최소값을 구하라.
당구대의 가로길이, 세로길이, 당구공의 시작 x좌표, 당구공의 시작 y좌표, 목표하는 공의 좌표 리스트가 주어진다
처음에는 벽까지의 거리와 공까지의 거리를 나누어 계산하려고 했다.
근데 값이 실수가 나오고 거리 계산하기가 어려웠다.
그래서 다른 분들이 남겨주신 힌트를 보았다.
대칭을 사용하면 수학적으로 거리를 구할 수 있다는 것을 알게되었다.
def solution(m, n, startX, startY, balls):
answer = []
def getDistance(x, y):
return (x - startX)**2 + (y - startY)**2
for bx, by in balls:
min_distance = int(1e9)
if not (startX == bx and startY > by):
min_distance = min(min_distance, getDistance(bx, -by))
if not (startX == bx and startY < by):
min_distance = min(min_distance, getDistance(bx, 2*n - by))
if not (startY == by and startX > bx):
min_distance = min(min_distance, getDistance(-bx, by))
if not (startY == by and startX < bx):
min_distance = min(min_distance, getDistance(2*m - bx, by))
answer.append(min_distance)
return answer
[프로그래머스] 159993. 미로탈출 | BFS | 파이썬, 소스코드, 정답 (0) | 2023.05.08 |
---|---|
[프로그래머스] 160585. 혼자서 하는 틱택토 | 구현 | 파이썬, 소스코드, 정답 (0) | 2023.05.07 |
[프로그래머스] 169199. 리코쳇 로봇| BFS | 파이썬, 소스코드, 정답 (1) | 2023.05.05 |
[프로그래머스] 172927. 광물 캐기| 그리디 | 파이썬, 소스코드, 정답 (1) | 2023.05.04 |
[프로그래머스] 176962. 과제 진행하기 | 구현 | 파이썬, 소스코드, 정답 (0) | 2023.05.03 |