๋ฌธ์
๋ฐฑ์ค ์ ์ฐพ๊ธฐ https://www.acmicpc.net/problem/1920
์ฝ๋
n = int(input())
arr = sorted(list(map(int, input().split())))
m = int(input())
targets = list(map(int, input().split()))
for target in targets:
answer = 0
# ์ด๋ถํ์
s = 0
e = n - 1
while s <= e:
mid = (s + e) // 2
if arr[mid] == target:
answer = 1
break
elif arr[mid] > target: # ๋ค์ด?
e = mid - 1
else: # ์
?
s = mid + 1
print(answer)
ํ์ด
n = int(input())
arr = sorted(list(map(int, input().split())))
m = int(input())
targets = list(map(int, input().split()))
์ ๋ ฅ ํ์์ ๋ง๊ฒ ๋ณ์๋ค์ ์ ๋ ฅ๋ฐ๋๋ค.
targets์ ์๋ ๊ฐ๋ค์ด arr์ ์๋์ง ์ด๋ถํ์ํ๋ฉฐ ์ฐพ์๊ฒ์ด๊ธฐ ๋๋ฌธ์ arr์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด๋๋ค.
for target in targets:
ํ๊ฒ๋ค ๋ง๋ค arr์ ์๋์ง ์๋์ง์ ๋ํ ๊ฐ์ ๋ฐํํด์ผํ๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค.
๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ๊ฐ์ target์ ๋ํด ์ด๋ถํ์์ ์งํํ๋ค.
answer = 0
# ์ด๋ถํ์
s = 0
e = n - 1
while s <= e:
mid = (s + e) // 2
if arr[mid] == target:
answer = 1
break
elif arr[mid] > target: # ๋ค์ด?
e = mid - 1
else: # ์
?
s = mid + 1
target์ด arr ๋ฐฐ์ด์ ์๋์ง ์๋์ง์ ๋ํ ๋ณ์, answer์ ์ ์ธํ๋ค.
์ด๋ถ ํ์์ ํ๋ฉฐ ๋ฐฐ์ด์ ์๋์ง ์๋์ง ํ์ํ๋ค.
์์์ (s)์ ๋์ (e)๋ฅผ ์ ์ธํ๊ณ
target ๊ฐ์ ๋๊น์ง ๋ชป์ฐพ๋๋ค๋ฉด ์์์ (s)๊ณผ ๋์ (e)์ด ๊ต์ฐจ๋๋ ์๊ฐ์ด ์ฌ๊ฒ์ด๋ค. ๊ต์ฐจ๋๋ ์๊ฐ๊น์ง ๊ณ์ ์ด๋ถํ์ํ๋ค.
arr์ ์ค๊ฐ์ง์ ๊ฐ์ด target๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ์ฆ, target์ด arr์์ ์๋ค๋ฉด answer์ 1๋ก ์ด๊ธฐํํ๊ณ ์ด๋ถํ์์ ๋ฉ์ถ๋ค.
arr์ ์ค๊ฐ์ง์ ์ด target๋ณด๋ค ๋ ํฌ๋ค๋ฉด ๋ ์ง์ ์ mid - 1 ๋ก ์ค์ด๊ณ , ๋ค์ ์ด๋ถํ์ํ๋ค.
arr์ ์ค๊ฐ์ง์ ์ด target๋ณด๋ค ๋ ์๋ค๋ฉด ์์ ์ง์ ์ mid + 1๋ก ๋๋ฆฌ๊ณ , ๋ค์ ์ด๋ถํ์ํ๋ค.
print(answer)
์ด๋ถํ์ ์๋ฃ ํ answer ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ด๋ถํ์ ์ค arr์์ target ๊ฐ์ ์ฐพ์๋ค๋ฉด answer์ด 1๋ก ์ด๊ธฐํ ๋์ด ์์๊ฒ์ด๊ณ , ๋ชป ์ฐพ์๋ค๋ฉด ์ฒ์ ์ ์ธํ๋ 0 ๊ทธ๋๋ก ์ผ๊ฒ์ด๋ค.
๋ค๋ฅธ ์ฝ๋
n = int(input())
arr = sorted(list(map(int, input().split())))
m = int(input())
targets = list(map(int, input().split()))
for target in targets:
if target in arr:
print(1)
else:
print(0)
ํ์ด
n = int(input())
arr = sorted(list(map(int, input().split())))
m = int(input())
targets = list(map(int, input().split()))
์ ๋ ฅํ์์ ๋ง์ถฐ ์ ๋ ฅ๋ฐ๋ ์ฝ๋๋ ์ ์ฝ๋์ ๋์ผํ๋ค.
for target in targets:
if target in arr:
print(1)
else:
print(0)
๋ ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ ์ง๊ณ ์ถ๋ค๋ฉด ๋ฐฐ์ด์์ ํน์ ์์๊ฐ ์๋์ง ํ์ธํ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
targets ๋ฐฐ์ด์ ๋๋ฉฐ
๊ฐ target์ด arr์์ ์๋ค๋ฉด 1์ ์ถ๋ ฅํ๊ณ , ์๋๋ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค.
ํ์ง๋ง ๋ฐฐ์ด์์ <in> ๋ช ๋ น์ด๋ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ธฐ๋๋ฌธ์, ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํฌ๋ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์๋ค.
์ค์ ๋ก ์ฝ 26๋ฐฐ๋ ๋์ด๋ ์๊ฐ์ ๋ณผ ์ ์๋ค.
์๋กญ๊ฒ ๋ฐฐ์ด์ / ๋๋์
- <in> ๋ช ๋ น์ด๊ฐ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค๋๊ฒ์ ์๊ฒ ๋์๋ค. ์์ ์๋ <in>๋ช ๋ น์ด๋ฅผ ์ฝ๊ฒ ์ผ๋๋ฐ, ์์ผ๋ก๋ ์ ๊ฒฝ์จ์ ์จ์ผํ ๊ฒ ๊ฐ๋ค.
- ์ด๋ถํ์์ผ๋ก ์ฝ๋๋ฅผ ์ง๋ฉด <in> ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋๋ณด๋ค ์๊ฐ์ด ํจ์ฌ ๋น ๋ฅด์ง๋ง, ๊ฐ๋ ์ฑ์ ๋น๊ต์ ๋งค์ฐ ๋จ์ด์ง๋ค. ๊ทธ๋์ ์ด๋ถ ํ์ ๊ณผ์ ์ ํจ์๋ก ๋ง๋ค์ด์ ํจ์๋ช ์ ์ง๊ด์ ์ด๊ฒ ์ ์ง์ผ๋ฉด ์คํ์๋๋ ์ฑ๊ธฐ๊ณ ๊ฐ๋ ์ฑ๋ ์ฑ๊ธธ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
'์ฝ๋ฉํ ์คํธ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๊ฑธ๊ทธ๋ฃน ๋ง์คํฐ ์ค์์ด (0) | 2024.06.21 |
---|---|
[๋ฐฑ์ค] ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2024.06.20 |
[๋ฐฑ์ค] ๊ทธ๋ฆผ (0) | 2024.06.18 |
[๋ฐฑ์ค] ์ํธ ๋ง๋ค๊ธฐ (0) | 2024.06.17 |
[๋ฐฑ์ค] ๋ฆฌ๋ชจ์ปจ (0) | 2024.06.16 |