티스토리 뷰

728x90

https://www.acmicpc.net/problem/15970

 

15970번: 화살표 그리기

직선 위에 위치를 나타내는 0, 1, 2, ...와 같은 음수가 아닌 정수들이 일정한 간격으로 오른쪽 방향으로 놓여 있다. 이러한 위치들 중 N개의 위치에 하나씩 점들이 주어진다(<그림 1>). 주어진 점들

www.acmicpc.net

 

처음엔 가는 방향과 오는 방향을 따로 반복문을 돌려 문제를 풀어봤지만,

문제의 핵심은 방향 구분 없이 동일한 색의 점 중에서 가장 최소거리인 점을 찾기만 하면 되는 문제입니다.

정렬을 시행한 후 반목문과 최솟값을 비교하는 min 함수를 이용하여 각 점의 최소거리를 구하면 되는 문제입니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
= int(input())
lst = []
for i in range(N):
    a, b = map(int, input().split())
    lst.append((a, b))
 
val = 0
lst.sort(key=lambda x: x[0])
 
for i in range(N):
    sub_lst = []
    for j in range(N):
        if i != j and lst[i][1== lst[j][1]:
            sub_lst.append(abs(lst[i][0]-lst[j][0]))
    val += min(sub_lst)
print(val)
cs

 

 

댓글