-
[프로그래머스] 당구 연습 LV2Python/Programmers 2024. 2. 23. 23:39728x90
1) 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2)알고리즘
- 한마디로 표현하면 '대칭이동을 활용한 최단거리 구하기'
# 문제를 풀고 정리하다가 깨달았다.(참고)
- 몇몇 상황을 제외한 상황(즉 한쪽 축이 같은 좌표값을 갖는 경우) 모두 4개의 벽 중 가장 최단거리 구하기
# 문제를 풀고 정리하다가
3) 코드
def solution(m, n, startX, startY, balls): answer = [] for n_x, n_y in balls: if startX == n_x: if n_y > startY : answer.append(min((n_y+startY)**2, (startY-n_y)**2+4*min(n_x,m-n_x)**2)) else: answer.append(min((2*n-startY-n_y)**2,(n_y-startY)**2+4*min(n_x,m-n_x)**2)) elif startY == n_y: if n_x > startX : answer.append(min((n_x+startX)**2,(n_x-startX)**2+4*min(n_y,n-n_y)**2)) else: answer.append(min((2*m-n_x-startX)**2,(n_x-startX)**2+4*min(n_y,n-n_y)**2)) else:# 나머지 상황(가장 가까운 벽) answer.append(min((n_x-startX)**2+min(startY+n_y,2*n-startY-n_y)**2,(n_y-startY)**2+min(startX+n_x,2*m-startX-n_x)**2)) return answer
728x90'Python > Programmers' 카테고리의 다른 글
[프로그래머스] 광물 캐기 LV2 (0) 2024.02.07 [프로그래머스] 숫자 카드 나누기 LV2 (0) 2023.08.08 [프로그래머스] 미로 탈출 LV2 (0) 2023.02.19 [프로그래머스] 호텔 대실 LV2 (0) 2023.02.19