๐๋ฌธ์ ์ค๋ช
๐๋ฌธ์ ์ ๊ทผ๋ฐฉ์
1์ฐจ์๋
3๋จ๊ณ์ ๊ฑธ์ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค์๋ค.
1. ์ ๋ ฅ๋ฐ์ ๊ฐ์ ์ ๋ ฌํ๋ค.
2. (์ ๋ ฅ๋ฐ์ ๊ฐ, ๊ฐ์)๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
3. 2๋ฒ์ ๋ฆฌ์คํธ์์ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด์งํ์์ ์ํํ๊ณ , ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
์ฒซ ์๋๋ ์ด์ง ํ์์ ์ฌ์ฉํ๋ค.
์ด์ ๋ ์ซ์ ์นด๋ ๊ฐ์๊ฐ 50๋ง์ด์๊ณ , ์ซ์ ์นด๋์ ๋ฒ์๊ฐ -์ฒ๋ง~+์ฒ๋ง์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ์ต์ ์ ๊ฒฝ์ฐ 50๋ง x 7log10์ ๊ณ์ฐํ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
ํ์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ํด์ฌ๋ก ๊ตฌํํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์์ค์ฝ๋
import sys
n = int(sys.stdin.readline().rstrip())
cards = list(map(int, sys.stdin.readline().rstrip().split()))
m = int(sys.stdin.readline().rstrip())
nums = list(map(int, sys.stdin.readline().rstrip().split()))
cards_set = list(set(cards))
cards.sort()
cards_set.sort()
cards_num = [cards_set[i] for i in range(len(cards_set))]
counts_num = [cards.count(cards_set[i]) for i in range(len(cards_set))]
def test(cards_num, num):
left, right = 0, len(cards_num)
while left <= right:
mid = (left+right)//2
if cards_num[mid] == num:
return mid
elif cards_num[mid] > num:
right = mid-1
else:
left = mid+1
return -1
def solution(cards_num, counts_num, nums):
result = []
for i in range(len(nums)):
res = test(cards_num, nums[i])
if res == -1:
result.append(0)
else:
result.append(counts_num[res])
return result
result = solution(cards_num, counts_num, nums)
for x in result:
print(x, end=' ')
2์ฐจ์๋
๋ ๋ฒ์งธ๋ ๋์ ๋๋ฆฌ๋ฅผ ์ด์ฉํ๋ค.
๋ฆฌ์คํธ๊ฐ ํธํ๋ค๋ณด๋ ์๊พธ ๋ฆฌ์คํธ๋ก ์ ๊ทผํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ๋ฌธ์ ์ ๋ณต์ก๋์ ๋์ด๋๊ฐ ์ฌ๋ผ๊ฐ๋ค.
๊ฐ๋จํ ์ ๋ ฅ๋ฐ์ ์๋ฅผ ์ฐจ๋ก๋๋ก ๋์ ๋๋ฆฌ์ key๊ฐ์ผ๋ก ์ ์ฅํ๊ณ , value๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด ๋๋ ๋ฌธ์ ์๋ค.
๊ฒฐ๊ณผ๊ฐ์ผ๋ก๋ ํด์ฌ์ ํด๋น ๊ฐ์ด ์์ผ๋ฉด value๋ฅผ ์ถ๋ ฅ, ์์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ฉด ํด๊ฒฐ๋ฌ๋ค.
์์ค์ฝ๋
import sys
n = int(sys.stdin.readline().rstrip())
cards = list(map(int, sys.stdin.readline().rstrip().split()))
m = int(sys.stdin.readline().rstrip())
nums = list(map(int, sys.stdin.readline().rstrip().split()))
cards_set = list(set(cards))
cards.sort()
def solution(cards_set, cards, nums):
hashmap = {}
for x in cards:
if x in hashmap:
hashmap[x] += 1
else:
hashmap[x] = 1
return hashmap
hashmap = solution(cards_set, cards, nums)s
for x in nums:
if x in hashmap:
print(hashmap[x], end=' ')
else:
print('0', end=' ')
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 11866 ์์ธํธ์ค ๋ฌธ์ ํ์ด (0) | 2021.03.23 |
---|---|
๋ฐฑ์ค 10866 ๋ฑ ๋ฌธ์ ํ์ด (0) | 2021.03.22 |
๋ฐฑ์ค 10814 ๋ฌธ์ ํ์ด (0) | 2021.03.20 |
๋ฐฑ์ค 2164(์นด๋๋ถ๋ฅ2) ๋ฌธ์ ํ์ด (0) | 2021.03.12 |
๋ฐฑ์ค 1259๋ฒ : ํฐ๋ฆฐ๋๋กฌ์ด๋? (0) | 2021.03.09 |