문제 링크 > 코딩테스트 연습 - 당구 연습 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr





솔루션 >
def solution(m, n, startX, startY, balls):
answer = []
for ball in balls:
diffX = startX - ball[0]
diffY = startY - ball[1]
left = (startX + ball[0]) ** 2 + (diffY ** 2) # 왼쪽 쿠션
right = ((m - startX) + (m - ball[0])) ** 2 + (diffY ** 2) # 오른쪽 쿠션
top = (diffX ** 2) + ((n - startY) + (n - ball[1])) ** 2 # 위쪽 쿠션
bottom = (diffX ** 2) + (startY + ball[1]) ** 2 # 아래쪽 쿠션
if diffX == 0: # X축 같은 선상일 때
if diffY > 0: # 아래쪽 방향 쿠션 안됨
result = min(left, right, top)
else: # 위쪽 방향 쿠션 안됨
result = min(left, right, bottom)
elif diffY == 0: # Y축 같은 선상일 때
if diffX > 0: # 왼쪽 쿠션 안됨
result = min(right, top, bottom)
else: # 오른쪽 쿠션 안됨
result = min(left, top, bottom)
else: # 같은 축 없을 때
result = min(left, right, top, bottom)
answer.append(result)
return answer
'Development > Algorithm' 카테고리의 다른 글
| < 알고리즘 문제 풀이 > 미로 탈출 (0) | 2023.12.05 |
|---|---|
| < 알고리즘 문제 풀이 > 혼자서 하는 틱택토 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 리코쳇 로봇 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 광물 캐기 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 과제 진행하기 (0) | 2023.12.05 |