https://www.acmicpc.net/problem/1728
solution
1. N 개의 구슬 --> N크기의 일차원 배열 생성
import sys
n = int(sys.stdin.readline())
coor = []
for i in range(n+1):
coor.append(list(map(int, sys.stdin.readline().split())))
loc_v = {} # 처음 위치, 속도 저장 (y좌표는 겹치지 않으므로 딕셔너리 이용)
for y in range(n):
v_candidate = [] # 속도가 될 수 있는 후보들을 1차원 배열에 저장
for i in range(n):
v_tmp = (coor[-1][i]-coor[0][y]) / n # (마지막 위치 - 처음 위치) / n
v_candidate.append(v_tmp)
for v in v_candidate: # 속도 대입
for i in range(1, len(coor)-1):
if coor[0][y]+v*i not in coor[i]: # 계산한 위치가 좌표 리스트에 없으면 for문 나감
break
if i == len(coor)-2: # 계산한 위치가 모두 좌표에 있었다면
loc_v[coor[0][y]] = int(v) # 딕셔너리에 처음 위치와 속도를 저장
for i in range(1, len(coor)-1):
coor[i].remove(coor[0][y]+v*i) # 탐색 시간을 줄이기 위해 이미 답을 구한 것은 좌표에서 제거
break
loc_v = sorted(loc_v.items(), key=lambda x: x[0]) # 처음 위치를 기준으로 오름차순 정렬
for i in range(len(loc_v)):
print(loc_v[i][0], loc_v[i][1])
38592KB
3488ms
for i in range(1, len(coor)-1):
coor[i].remove(coor[0][y]+v*i) # 탐색 시간을 줄이기 위해 이미 답을 구한 것은 좌표에서 제거
break
없으면
38562KB
6320ms
'알고리즘 > 정렬' 카테고리의 다른 글
자바 | 백준 | 10814 | 나이순 정렬 | Comparator, 람다식 (0) | 2021.02.05 |
---|---|
파이썬 | 백준 | 2865 | 나는 위대한 슈퍼스타K | 소수 출력 (0) | 2020.08.15 |
백준 | 파이썬 | 1431 | 시리얼 번호 (0) | 2020.08.06 |
파이썬 | 백준 | 10825 | 국영수 (0) | 2020.07.30 |