โ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ๋น๊ตํด ๋๋ฒ์งธ ๋ฆฌ์คํธ์ ์๋ ์นด๋์ ์ข ๋ฅ์๋ฐ๋ผ ์ฒซ๋ฒ์งธ ๋ฐฐ์ด์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ช๊ฐ์ธ์ง ๊ณ์ฐํ๋ ๋ฌธ์ ์ด๋ค.
n = int(input())
cards = list(map(int, input().split()))
m = int(input())
cardType = list(map(int, input().split()))
cards.sort()
cardDic = {key : 0 for key in cards}
for t in cards:
cardDic[t] += 1
keyList = sorted(list(cardDic.keys()) )
def binarySearch (data, num):
low = 0
high = len(data) - 1
while low <= high:
mid = (low + high) // 2
if data[mid] == num :
return True
elif num > data[mid] :
low = mid + 1
elif num < data[mid] :
high = mid - 1
return False
for t in cardType:
if binarySearch(keyList, t) == True:
print(cardDic[t],end=' ')
else:
print(0, end=' ')
ํ์ด ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ฃผ์ด์ง ์ ๋ ฅ์ ์ฒ๋ฆฌ => ์ด ๊ณผ์ ์์ ์ฒซ๋ฒ์งธ ๋ฐฐ์ด์ ์นด๋ ์ข ๋ฅ ๊ฐ๊ฐ์ ์๋ฅผ ์ธ์ด cardDic์ ์ ์ฅ
2. ํจ์จ์ฑ๋ ๊ฐ์ด ๊ณ ๋ คํด์ผ ํ๊ธฐ์ ํ์๊ณผ์ ์์ O(logN) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์ด์ง ํ์ ๋ฉ์๋๋ฅผ ๊ตฌํ
3. ๋๋ฒ์งธ ๋ฆฌ์คํธ์ ์์๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ ์ด์งํ์์ ํตํด cardDic์ cardType์ด ์ ์ฅ๋์ด ์๋์ง๋ฅผ ํ๋จ
4. ๋ง์ผ ์๋ค๋ฉด ์ด๊ธฐ cardDic์ ์ ์ฅํ๋ ํด๋น ์นด๋ ์ข ๋ฅ์ ์๋ฅผ ์ถ๋ ฅํด์ฃผ๊ณ , ์๋๋ผ๋ฉด 0์ ์ถ๋ ฅ
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 18111 ๋ง์ธํฌ๋ํํธ (0) | 2022.04.11 |
---|---|
[BaekJoon] 15829 Hashing (0) | 2022.04.11 |
[BaekJoon] 2805 ๋๋ฌด์๋ฅด๊ธฐ (0) | 2022.04.11 |
[BaekJoon] 1654 ๋์ ์๋ฅด๊ธฐ (0) | 2022.04.11 |
[BaekJoon] 10845 ํ (0) | 2022.04.11 |