본문 바로가기
CS/알고리즘

[이코테] 정렬 - 안테나

by 데브겸 2023. 2. 12.

ㅋㅋㅋㅋㅋㅋ 정답 보니까 진짜 허무해지는 문제...

 

1. 내 풀이

n = int(input())
data = list(map(int, input().split()))
distance = {}


for i in range(n):
    tmp = 0
    for j in range(0, n, -1):
        if j == 0:
            tmp += abs(data[i] - data[j])
            distance[tmp] = i
        else:
            tmp += abs(data[i]-data[j])

keys = list(distance.keys())
keys.sort()

print(distance[keys[0]])

 

1-1. 풀이 도중 생각

1) 계수 정렬로 하기에는 공백이 너무 많이 생길 것 같은데?

2) 거리를 다 구해서 각 집 위치를 키를 가지는 딕셔너리를 만들어야겠다

3) value로 key 찾는게 어려우니까 거리를 key로, 집 위치를 value로 해보자

4) 음... key값만 뽑아서 sort하려고 하는데 안 되네

 

2. 정답

중간값을 구하면 되지 않을까 막연히 생각은 했지만 진짜로 그렇게 풀어야 하네? ㅋㅋㅋ

n = int(input())
data = list(map(int, input().split()))
data.sort()

print(data[(n-1)//2]

 

3. 새로 알게 된 것 or 새삼 다시 알게 된 것

충격: dictionary도 sort 혹은 sorted로 정렬 가능. 단, 출력은 tuple pair로 이루어진 list를 반환

- 그냥 sort만 하면 key값을 기준으로 sort

- lambda item : item[1] 처럼 lambda를 이용하면 value를 기준으로 sort 가능함