문제 https://www.acmicpc.net/problem/1461
n, m = map(int, input().split())
points = list(map(int, input().split()))
plus=[]
minus=[]
for i in points:
if i>0:
plus.append(i)
else:
minus.append(i)
plus.sort(reverse=True)
minus.sort()
max_distance=0
for i in points:
if abs(i)>abs(max_distance):
max_distance=i
max_distance를 0으로 설정해 두고 리스트에서 절댓값이 0보다 크면 update
distance=[]
for i in range(0, len(plus), m):
if plus[i] != max_distance:
distance.append(plus[i])
for i in range(0, len(minus), m):
if minus[i] != max_distance:
distance.append(minus[i])
result = abs(max_distance)
for i in distance:
result += abs(i*2)
print(result)
지금까지 풀었던 알고리즘 문제중에서는 가장 복잡했다.(초보이슈ㅠㅠ)
코드를 쓰면서 abs()를 반복하기 싫어서 처음부터 minus를 구성할 때 abs를 썼더니 오답이 나온다.
내 코드가 잘못된 것인지 뭐가 맞는지 확인해서 업데이트를 해야겠다.