Baekjoon18310_안테나

최효준·2022년 12월 8일
0

알고리즘 문제풀이

목록 보기
13/61

문제

풀이

처음에 그냥 생각나는 대로 코드가 쳐지는 대로 문제를 풀었다. 단순히 입력받고 전체 집의 위치 마다 안테나를 설치해가며 거리를 비교했다. 그 후 설치한 위치마다의 안테나와 집의 거리 차이를 리스트에 저장한 뒤 거리 순으로 정렬 후 집의 위치별로 정렬해서 가장 앞의 값을 답으로 냈는데 시간 초과가 났다.

오답코드

import sys
input = sys.stdin.readline
n = int(input())
home = list(map(int,input().split()))
home.sort()

result = 100000
point = []
for i in home:
    temp = 0
    for j in home:
        temp += (abs(j-i))
    if result >= temp:
        result = temp
        point.append([temp,i])

point.sort(key=lambda x : (x[0],x[1]))
print(point[0][1])

다시 생각한 후의 풀이

다시금 천천히 생각해보니 결국 그냥 중간에 설치하면 거리가 최솟값이 되는거 아닌가 라는 생각이 들었다. 그래서
1. 그냥 집 위치들을 정렬
2. 그 중 중간값을 출력
때로는 복잡하게 생각하지말고 간단하게 문제를 보는 것도 문제를 푸는 능력이라는 것을 다시금 깨닫는 문제였다.

정답코드

import sys
input = sys.stdin.readline
n = int(input())
home = list(map(int,input().split()))
home.sort()

print(home[(n-1)//2])
profile
Not to be Number One, but to be Only One

0개의 댓글