문제
https://www.acmicpc.net/problem/11650
걸린 시간
00 : 47 : 38
풀이
Python3
if __name__ == "__main__":
# 점의 개수
N = int(input())
loc = []
for i in range(0, N):
temp = list(map(int, input().split()))
loc.append(temp)
loc.sort()
# 다음 값을 탐색하기 위한 count 변수
count = 1
for x in range(0, len(loc)):
if count > 1:
count -= 1
else:
# y 값을 기준으로 정렬하기 위한 임시 리스트
tmp = []
# 1. 점의 x 좌표를 가져온다.
pointX = loc[x][0]
tmp.append(loc[x])
# 2. 계속해서 다음 값을 확인한다.
while True:
# 다음 인덱스가 범위 밖이면 break
if x+count > len(loc)-1:
break
nextX = loc[x+count][0]
# 다음 값이 같다면 count를 1증가, 정렬할 리스트에 보관
if pointX == nextX:
tmp.append(loc[x+count])
count += 1
# 다음 값이 다르면 break
else:
break
# 3. 정렬해서 다시 대입한다.
tmp = sorted(tmp, key = lambda x : x[1])
c = 0
for i in range(x, x+count):
loc[i] = tmp[c]
c += 1
for i in range(0, len(loc)):
print(loc[i][0], loc[i][1])
통과는 했지만 기존 알고리즘에서 중복된 y값 정렬을 제거해보고자 추가적으로 if 문을 하나 더 두었는데 오히려 실행시간이 아주 조금 더 늘었다. 왜일까?
'Baekjoon' 카테고리의 다른 글
Baekjoon 2164번 카드2 (0) | 2020.07.25 |
---|---|
Baekjoon 2609번 최대공약수와 최소공배수 (0) | 2020.07.25 |
Baekjoon 1920번 수 찾기 (0) | 2020.07.23 |
Baekjoon 1018번 체스판 다시 칠하기 (0) | 2020.07.23 |
Baekjoon 1929번 소수 구하기 (0) | 2020.07.23 |
댓글