Skip to content

Commit f486c10

Browse files
authored
Merge pull request #200 from AlgorithmStudy-Allumbus/minjeong3
Minjeong / 4์›” 4์ฃผ์ฐจ / 3๋ฌธ์ œ
2 parents 056f3d2 + bfd963e commit f486c10

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
N = int(input()) # ์ „์ฒด ์šฉ์•ก์˜ ์ˆ˜
5+
liquid = sorted(map(int, input().split()))
6+
7+
left = 0
8+
right = N - 1
9+
10+
# ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
11+
answer = abs(liquid[left] + liquid[right])
12+
answer_liquid = [liquid[left], liquid[right]]
13+
14+
while left < right:
15+
temp = liquid[left] + liquid[right]
16+
# ํ•ฉ์ด 0์— ๋” ๊ฐ€๊นŒ์šฐ๋ฉด ์ •๋‹ต ๊ฐฑ์‹ 
17+
if abs(temp) < answer:
18+
answer = abs(temp)
19+
answer_liquid = [liquid[left], liquid[right]]
20+
# ํฌ์ธํ„ฐ ์ด๋™
21+
if temp < 0:
22+
left += 1
23+
else:
24+
right -= 1
25+
26+
print(answer_liquid[0], answer_liquid[1])
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
N = int(input()) # ์ „์ฒด ์šฉ์•ก์˜ ์ˆ˜
5+
liquid = sorted(map(int, input().split()))
6+
7+
left = 0
8+
right = N-1
9+
mid = (left + right) // 2
10+
answer = abs(liquid[left] + liquid[mid] + liquid[right])
11+
answer_liquid = [liquid[left], liquid[mid], liquid[right]]
12+
13+
for i in range(N-2):
14+
left = i + 1
15+
right = N - 1
16+
17+
while left < right:
18+
temp = liquid[i] + liquid[left] + liquid[right]
19+
if abs(temp) < answer:
20+
answer = abs(temp)
21+
answer_liquid = [liquid[i], liquid[left], liquid[right]]
22+
if temp < 0:
23+
left += 1
24+
else:
25+
right -= 1
26+
27+
print(*answer_liquid)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sys
2+
3+
input = sys.stdin.readline
4+
5+
6+
# Find ์—ฐ์‚ฐ(๊ฐ™์€ ์ง‘ํ•ฉ์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜)
7+
def find(a):
8+
if a != parent[a]:
9+
parent[a] = find(parent[a]) # ๊ฒฝ๋กœ ์••์ถ•
10+
return parent[a]
11+
12+
13+
# Union ์—ฐ์‚ฐ(๋‘ ์ง‘ํ•ฉ์„ ํ•ฉ์น˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜)
14+
def union(a, b):
15+
p_a = find(a)
16+
p_b = find(b)
17+
18+
if p_a > p_b: # ๊ฐ’์ด ๋” ์ž‘์€ ์ชฝ์„ ๋ถ€๋ชจ๋กœ ์„ค์ •
19+
parent[p_a] = p_b
20+
else:
21+
parent[p_b] = p_a
22+
23+
24+
tc_num = 0 # ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๊ฐœ์ˆ˜
25+
while True:
26+
N = int(input())
27+
parent = [i for i in range(N + 1)] # ์ดˆ๊ธฐ: ๊ฐ ์›์†Œ๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๋ถ€๋ชจ๋กœ ๊ฐ€์ง
28+
manito = {}
29+
tc_num += 1 # ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์—…๋ฐ์ดํŠธ
30+
31+
if N == 0: # ์ž…๋ ฅ ์ข…๋ฃŒ
32+
break
33+
34+
for _ in range(N):
35+
from_p, to_p = input().split()
36+
# manito์— ๋ฒˆํ˜ธ ๋ถ€์—ฌ
37+
if from_p not in manito:
38+
manito[from_p] = len(manito) + 1
39+
if to_p not in manito:
40+
manito[to_p] = len(manito) + 1
41+
# ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ
42+
union(parent[manito[from_p]], parent[manito[to_p]])
43+
44+
parent = set(parent)
45+
46+
print(tc_num, len(parent) - 1) # 0์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ 1 ๋นผ์ฃผ์–ด์•ผ ํ•จ

0 commit comments

Comments
ย (0)