반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 디렉토리계층구조
- 맥북
- it자격증
- 맥북셋팅
- 채널계
- MSA
- python
- 학점은행제
- jdk
- 컴퓨터공학학사취득
- 개인프로필스튜디오창업
- Homebrew
- 은행IT
- 학점은행제무료강의
- SQL
- 오라클
- DB
- union
- 렌탈스튜디오창업
- 코딩테스트
- 프로그래머스
- 인강빨리듣기
- oracleapex
- jdk17
- Pass By Value
- 계정계
- fastapi
- 모놀리식
- 코어뱅킹
- 맥북환경설정
Archives
- Today
- Total
개발머해니
[파이썬] 가장 가까운 매장 찾기 - 브루트 포스 ★ 본문
728x90
반응형
실습 설명
스다벅스는 줄어든 매출 때문에 지점 하나를 닫아야 하는 위기에 처해 있습니다. 어떤 지점을 닫는 게 회사에 타격이 적을지 고민이 되는데요. 서로 가까이 붙어 있는 매장이 있으면, 그 중 하나는 없어져도 괜찮지 않을까 싶습니다.
사장님은 비서 태호에게, 직선 거리가 가장 가까운 두 매장을 찾아서 보고하라는 임무를 주셨습니다.
태호는 영업팀에서 매장들 좌표 위치를 튜플 리스트로 받아 왔습니다.
# 예시 tuple 리스트
test_coordinates = [(2, 3), (12, 30), (40, 50), (5, 1), (12, 10), (3, 4)]
좌표로 나타낸 것입니다. 0번 매장은 (2, 3)에, 그리고 1번 매장은 (12, 30) 위치에 있는 거죠.
태호가 사용하려는 함수 closest_pair는 이 좌표 리스트를 파라미터로 받고, 리스트 안에서 가장 가까운 두 매장을 [(x1, y1), (x2, y2)] 형식으로 리턴합니다.
참고로 태호는 이미 두 좌표 사이의 거리를 계산해 주는 함수 distance를 써 놨는데요, 함수 distance는 인풋으로 두 튜플을 받아서 그 사이의 직선 거리를 리턴합니다.
print(distance((2, 5), (5, 9))) # => 두 지점 사이의 거리 5.0이 출력됨
실습 결과
# 제곱근 사용을 위한 sqrt 함수
from math import sqrt
# 두 매장의 직선 거리를 계산해 주는 함수
def distance(store1, store2):
return sqrt((store1[0] - store2[0]) ** 2 + (store1[1] - store2[1]) ** 2)
# 가장 가까운 두 매장을 찾아주는 함수
def closest_pair(coordinates):
# 여기에 코드를 작성하세요
pair = [ coordinates[0] , coordinates[1] ]
for i in range(len(coordinates) - 1):
for j in range(i+1, len(coordinates)):
store1, store2 = coordinates[i], coordinates[j]
if distance(pair[0], pair[1]) > distance(store1, store2):
pair = [store1, store2]
return pair
# 테스트 코드
test_coordinates = [(2, 3), (12, 30), (40, 50), (5, 1), (12, 10), (3, 4)]
print(closest_pair(test_coordinates))
[(2, 3), (3, 4)]
오답 1
- 튜플 선언 : [ a, b ]
- for문으로 모든 조합 구하는 방법
# 제곱근 사용을 위한 sqrt 함수
from math import sqrt
# 두 매장의 직선 거리를 계산해 주는 함수
def distance(store1, store2):
return sqrt((store1[0] - store2[0]) ** 2 + (store1[1] - store2[1]) ** 2)
# 가장 가까운 두 매장을 찾아주는 함수
def closest_pair(coordinates):
# 여기에 코드를 작성하세요
min_dist = distance(coordinates[0], coordinates[1])
min_tuple = coordinates[0], coordinates[1]
for i in coordinates:
for j in coordinates:
if i == j:
continue
else:
if min_dist > min(min_dist, distance(i, j)):
min_tuple = [i, j] #튜플 선언은 []
min_dist = min(min_dist, distance(i, j))
return min_tuple
# 테스트 코드
test_coordinates = [(2, 3), (12, 30), (40, 50), (5, 1), (12, 10), (3, 4)]
print(closest_pair(test_coordinates))
728x90
반응형
'알고리즘' 카테고리의 다른 글
[파이썬] 1부터 n까지의 합 - 분할 정복 ★ (0) | 2023.09.16 |
---|---|
[파이썬] 런던 폭우 - 브루트 포스 (0) | 2023.09.16 |
[파이썬] 카드 뭉치 최대 조합 - 브루트포스 ★ (0) | 2023.09.16 |
[파이썬] 하노이의 탑 - 재귀함수 ★ (1) | 2023.09.16 |
[파이썬] 뒤집힌 리스트 - 재귀 함수 (0) | 2023.09.15 |