์๋ฃ๊ตฌ์กฐ/๐์๊ณ ๋ฆฌ์ฆ - 31
์ค๋ ๋ค์ ๊ฐ์ ๋ชฉ๋ก
- ๊ณ ๊ธ ์๋ฃ๊ตฌ์กฐ - 2
- ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ด
๊ณ ๊ธ ์๋ฃ๊ตฌ์กฐ - 2
SHA-256
import hashlib
print(hashlib.sha256(input().encode()).hexdigest())
์ ์ฐพ๊ธฐ
n๊ธธ์ด์ ์์ด์ด ์ฃผ์ด์ง๊ณ ์ด๋ฅผ A๋ผ ํ๊ณ , m๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ m๊ฐ์ ์๊ฐ A์์ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฌธ์
result = []
n = int(input())
a = list(map(int, input().split(' ')))
m = int(input())
x = list(map(int, input().split(' ')))
a.sort()
for e in x:
start, end = 0, n
inserted = False
while start < end:
mid = (start + end) // 2
if a[mid] == e:
result.append('1')
inserted = True
break
elif a[mid] < e:
start = mid + 1
else:
end = mid
if not inserted:
result.append('0')
print('\n'.join(result))
์ฒซ ์์ด์ ์ ๋ ฌํด์ ์ด์งํ์์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ค.
์๊ฐ๋ณต์ก๋๋ ์ ๋ ฌํ๋๋ฐ $n log n$์ด๋ผ ํ๋ฉด,
n๊ฐ๋ฅผ ์ ๋ ฌํ๋ ์๊ฐ + m๊ฐ๋ฅผ n๊ฐ์์ ์ด์งํ์์ผ๋ก ์ฐพ๋์๊ฐ
$n log n + m log n$์ด๋ค.
๋ค์ ํ์ด๋ ํ์ด์ฌ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ set(์งํฉ)์ ์ฌ์ฉํด๋ดค๋ค.
result = []
n = int(input())
a = set(map(int, input().split(' ')))
m = int(input())
x = list(map(int, input().split(' ')))
for e in x:
print(1 if e in a else 0)
ใ ใ ใ ใ ใ ใ .. ์์ฒญ ๋น ๋ฅธ๊ฒ
์น๊ตฌ ๋คํธ์ํฌ
์น๊ตฌ ๊ด๊ณ๊ฐ ์ฃผ์ด์ง๋๋ง๋ค ๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ๊ณ ,
ํด๋น ๊ทธ๋ฃน์ ์น๊ตฌ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ค.
parentOf = {}
rank = {}
friend = {}
def Find(node):
if parentOf[node] != node:
parentOf[node] = Find(parentOf[node])
return parentOf[node]
def Union (n1, n2):
p1 = Find(n1)
p2 = Find(n2)
if p1 == p2:
return #friend[p1]
if rank[p1] < rank[p2]:
parentOf[p1] = p2
friend[p2] += friend[p1]
#return friend[p2]
elif rank[p1] > rank[p2]:
parentOf[p2] = p1
friend[p1] += friend[p2]
#friend[p1]
else:
rank[p1] += 1
parentOf[p2] = p1
friend[p1] += friend[p2]
# return friend[p1]
tc = int(input())
for _ in range(tc):
parentOf = {}
rank = {}
friend = {}
f = int(input())
for _ in range(f):
fs = input().split(' ')
for i in fs:
if i not in friend:
friend[i] = 1
rank[i] = 0
parentOf[i] = i
Union(fs[0], fs[1])
print(friend[Find(fs[0])])
์์ Union-Find ๋ฌธ์ ๋ค.
Unionํจ์์์ ์น๊ตฌ ์๋ฅผ ๋ฐ๋ก ๋ฆฌํดํ๋๊ฒ 500ms ๋ ๋๋ฆฌ๋ค.
(๋ ๋น ๋ฅผ ์ค ์์๋๋ฐ ???)
๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
์ ์ ๋ ฌํ๊ธฐ
n = int(input())
num = []
for i in range(n):
num.append(int(input()))
num.sort()
for e in num:
print(e)
์
๋ ฅ๋ฐ๊ณ sort()๋ก ์ ๋ ฌํ๋ค.
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ๊ตฌํํด๋ด๋ ์ข๋ค.
์ํธ์ธ์ฌ์ด๋
val = int(input())
l = []
while val:
l.append(val % 10)
val //= 10
l.sort()
p = 1
val = 0
for e in l:
val += e * p
p *= 10
print(val)
๊ฐ ์๋ฆฌ์๋ฅผ ๋๋ ์ ๋ฆฌ์คํธ์ ์ ์ฅ ํ, ์ ๋ ฌ,
์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ํตํด ์ ๋ ฌํ ์๋ฅผ ๋ง๋ค์๋ค.
$์ ๋ ฌํ ์ = \sum_{e \in l} e * 10^{index}$
๋ง์ง๋ง
ํฌ์คํธ๋ ์จ๋๊ณ ์ ์ถ ์ํ๋ ๋ฐ๋์ ๋ฏธ์
์คํจ
๊ทธ๋๋ ์ธ๊ฐ ๋ค ๋ค์ ๋๊น์ง๋ ์ฐ์
๋๊ธ๋จ๊ธฐ๊ธฐ