300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OS
- 동적 프로그래밍
- nlp
- 알고리즘
- 운영체제
- BFS
- 코딩테스트
- google coding competition
- 코딩 테스트
- 킥스타트
- AI
- 그래프
- 네트워크
- 프로그래밍
- 딥러닝
- PYTHON
- linux
- 구글 킥스타트
- 백준
- 리눅스
- 동적프로그래밍
- 코딩
- 파이썬
- DFS
- 프로그래머스
- kick start
- 순열
- 브루트포스
- CSS
- dp
Archives
- Today
- Total
오뚝이개발자
[Google Kick Start] 2021 구글 킥스타트 Round G Staying Hydrated 풀이 본문
코딩 테스트/Google Kick Start
[Google Kick Start] 2021 구글 킥스타트 Round G Staying Hydrated 풀이
땅어 2021. 12. 8. 20:35728x90
300x250
문제
https://codingcompetitions.withgoogle.com/kickstart/round/00000000004362d6/00000000008b3a1c
나의 풀이
단순히 brute-force 방식으로 풀면 시간 초과 에러가 난다. 이 문제에서 핵심은 search를 어떻게 효율적으로 할 것인가이다. 이를 위해선 최적의 x, y 좌표가 어디에 위치할 것인지에 대해 생각해봐야 한다.
x의 최적 위치만을 찾는다고 생각해보자. 만약 x1이라는 특정 지점을 기준으로 좌측에 가구가 a개 우측에 가구가 b개 있다고 해보자. 만약 a>b라면 각 가구로부터 거리가 최소가 되기 위한 x의 좌표는 당연히 x1을 기준으로 조금 더 좌측에 치우친 방향에 존재할 것이다.
이러한 생각을 가지고 x와 y의 좌표를 모두 구하면 된다. 두 개를 한꺼번에 구하려 하지 말고 따로 나누어 구한다고 생각해야 한다. 최종 시간 복잡도는 O(nlogn)이 나오게 된다.(정렬하는 부분 때문에)
코드
# https://codingcompetitions.withgoogle.com/kickstart/round/00000000004362d6/00000000008b3a1c
T = int(input())
for t in range(T):
k = int(input())
x, y = {}, {}
for i in range(k):
x1, y1, x2, y2 = list(map(int, input().split()))
if x1 in x:
x[x1] += 1
else:
x[x1] = 1
if x2 in x:
x[x2] += 1
else:
x[x2] = 1
if y1 in y:
y[y1] += 1
else:
y[y1] = 1
if y2 in y:
y[y2] += 1
else:
y[y2] = 1
x = sorted(x.items())
y = sorted(y.items())
ans_x, ans_y = 0, 0
count = -1 * k
for i in range(len(x)):
count += x[i][1]
if count >= 0:
ans_x = x[i][0]
break
count = -1 * k
for i in range(len(y)):
count += y[i][1]
if count >= 0:
ans_y = y[i][0]
break
print(f"Case #{t+1}: "+str(ans_x)+' '+str(ans_y))
728x90
300x250
'코딩 테스트 > Google Kick Start' 카테고리의 다른 글
[Google Kick Start] 2021 구글 킥스타트 Round A Rabbit house 풀이 (0) | 2021.12.19 |
---|---|
[Google Kick Start] 2021 구글 킥스타트 Round A L shaped plots 풀이 (0) | 2021.12.18 |
[Google Kick Start] 2021 구글 킥스타트 Round H Painter 풀이 (0) | 2021.11.27 |
[Google Kick Start] 2021 구글 킥스타트 Round H Transform the string 풀이 (0) | 2021.11.20 |
[Google Kick Start] 2021 구글 킥스타트 Round G Dogs and Cats 풀이 (0) | 2021.11.18 |
Comments