문제 : https://www.acmicpc.net/problem/15970
구현 문제다.
- 우선 입력을 정렬한다. 겹치는게 없으므로 정렬 조건은 설정 안해도 된다.
- 입력받은 좌표를 하나하나 돌아가면서
- 현재 좌표보다 왼쪽에 있는 것중에 색이 같은것을 찾는다.
- 현재 좌표보다 오른쪽에 있는 것중에 색이 같은것을 찾는다.
- tmpret에 왼쪽, 오른쪽 값이 나오는데 그 중에서 작은것을 골라 답에 더해준다
import sys
n = int(sys.stdin.readline())
d = []
for _ in range(n):
d.append([int(i) for i in sys.stdin.readline().split()])
d.sort()
ret = 0
for i in range(n):
tmploc, tmpclr = d[i]
tmp = i-1
tmpret = [9912341234, 9912341234]
# left
while tmp >= 0:
if d[tmp][1] == tmpclr:
tmpret[0] = abs(tmploc - d[tmp][0])
break
else:
tmp -= 1
# right
tmp = i+1
while tmp < n:
if d[tmp][1] == tmpclr:
tmpret[1] = abs(tmploc - d[tmp][0])
break
else:
tmp += 1
ret += min(tmpret)
print(ret)
'취준 > 백준' 카테고리의 다른 글
[백준][Python][2667][BFS] 단지번호붙이기 (0) | 2020.04.29 |
---|---|
[백준][Python][1012][BFS] 유기농 배추 (0) | 2020.04.28 |
[백준][Python][17609][구현] 회문 (0) | 2020.04.10 |
[백준][Python][2225][DP] 합분해 (0) | 2020.04.09 |
[백준][Python][17142][시뮬레이션] 연구소 3 (0) | 2020.04.08 |