ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ฐ๋ก ์ ๋ฒ ๋ฌธ์ ์ธ 17298 ์คํฐ์๋ฅผ ์ดํดํ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ์์ ๋ฌธ์ ๋ ๋จ์ํ ์์ด์ ๊ฐ์ ๋น๊ตํ์ฌ ํฐ ๊ฐ์ด ์๋์ง ํ์ธํ๋ ๋ฌธ์ ์์ง๋ง, ์ด ๋ฌธ์ ๋ ๊ฐ ์์ด๊ณผ ์ค๋ณต๋๋ ๊ฐ์ ์นด์ดํธํ์ฌ ์นด์ดํธ ๋๋ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ด ์๋์ง ํ์ธํ๋ ๋ฌธ์ ์ด๋ค.๐
์ฝ๋
from sys import stdin
from collections import Counter
if __name__ == "__main__":
stack = []
n = int(stdin.readline())
s = list(stdin.readline().split())
cnt = Counter(s)
s = [[cnt[num], int(num)] for num in s]
answer = [-1 for _ in range(n)]
stack.append(0)
i = 1
while stack and i < n:
while stack and s[stack[-1]][0] < s[i][0]:
answer[stack[-1]] = s[i][1]
stack.pop()
stack.append(i)
i += 1
for num in answer:
print(num, end=' ')
์คํฐ์ ๋ฌธ์ ์ ์ฝ๋๋ ๊ฑฐ์ ๋์ผํ๋ฉฐ, ๊ฐ ์์์ ๊ฐ์๋ฅผ ์นด์ดํธ ํ๊ธฐ ์ํด Counter๋ฅผ ์ถ๊ฐํ๊ณ , ์นด์ดํฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋์๋ฅผ ๋น๊ตํ๋ ๊ฒ ๋ง๊ณ ๋ ์ฐจ์ด๊ฐ ์๋ค.
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 10799 ์ ๋ง๋๊ธฐ (0) | 2020.06.23 |
---|---|
๋ฐฑ์ค: 17413 ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2020.06.23 |
๋ฐฑ์ค: 17298 ์คํฐ์ (4) | 2020.06.23 |
๋ฐฑ์ค: 1158 ์์ธํธ์ค ๋ฌธ์ (0) | 2020.06.22 |
๋ฐฑ์ค: 1874 ์คํ ์์ด (0) | 2020.06.22 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ