ํฐ์คํ ๋ฆฌ ๋ทฐ
algorithm/programmers
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ณด์ ์ผํ / python ํ์ด์ฌ / 2020 ์นด์นด์ค ์ธํด์ญ ์ฝํ
jen jen 2021. 8. 8. 14:20728x90
๐ฅ 2020 ์นด์นด์ค ์ธํด์ญ
๋ฌธ์
thinking
์์ ํ์์ผ๋ก ํ๋ฉด ์๊ฐ๋ณต์ก๋ O(N²) ์ฌ์ ์๋จ. -> ํฌํฌ์ธํฐ ๋ก ํ์
1. ์คํจ์ฝ๋
์ฒ์์ ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ๊ณผ set์ ์ด์ฉํด ํ์๋๋ฐ ํจ์จ์ฑ์ด ๋ฅ๋ง์ด์๋ค.... ์???????????????? ํฌํฌ์ธํฐ๋ก ํ์๋๋ฐ ๐ฒ
def solution(gems):
N = len(gems)
answer = [0, N-1]
kind = set(gems)
s,e = 0,0 # ํฌํฌ์ธํฐ
while 0<=s<N and 0<=e<N:
if set(gems[s:e+1]) == kind: # ๋ชจ๋ ์ข
๋ฅ ๋ค ๊ฐ๊ณ ์์ผ๋ฉด start point ์ฆ๊ฐ์ํค๋ฉด์ ์ต์๊ตฌ๊ฐ ๊ตฌํ๊ธฐ
if (e-s+1) < (answer[1]-answer[0]+1):
answer = [s,e]
s += 1
else: # ์ข
๋ฅ ๋ถ์กฑํ๋ฉด end point ์ฆ๊ฐ์ํค๊ธฐ
e += 1
answer[0] += 1
answer[1] += 1
return answer
์๋ํ๋ฉด ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ์ผ๋ก ํ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๋ผ์ด์ฑ์ ๊ฐ์ฒด k๊ฐ๋ฅผ ์กฐํํด์ผํ๋ฏ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(k)์ด๋ค. ๊ฑฐ์ ๋ญ ์ํํ๋ ์์ค ;;; ๊ทธ๋์ ๊ฒฐ๋ก ์ ์ฌ๋ผ์ด์ฑ์ ๋ฒ๋ ค๋ผ !!!!!!!!!
2. ๋ง์์ฝ๋
์นด์นด์ค ํ ํฌ ๋ธ๋ก๊ทธ ํด์ค์ ๋ณด๋ ๋์ ๋๋ฆฌ ๋ก ํ๋ผ๊ธธ๋ ์ฌ๋์ ํด๋ดค๋ค
์ฝ๋
def solution(gems):
N = len(gems)
answer = [0, N-1]
kind = len(set(gems)) # ๋ณด์์ข
๋ฅ
dic = {gems[0]:1,} # ์ข
๋ฅ ์ฒดํฌํ ๋์
๋๋ฆฌ
s,e = 0,0 # ํฌํฌ์ธํฐ
while s<N and e<N:
if len(dic) < kind: # ์ข
๋ฅ ๋ถ์กฑํ๋ฉด end point ์ฆ๊ฐ & dic ๊ฐ์ ์ฆ๊ฐ
e += 1
if e == N:
break
dic[gems[e]] = dic.get(gems[e], 0) + 1
else: # ์ข
๋ฅ ๊ฐ์ผ๋ฉด ans ๋น๊ต ํ ๋ต ๊ฐฑ์ ํ๊ณ , start point ์ฆ๊ฐ & dic ๊ฐ์ ๋ค์ด
if (e-s+1) < (answer[1]-answer[0]+1):
answer = [s,e]
if dic[gems[s]] == 1:
del dic[gems[s]]
else:
dic[gems[s]] -= 1
s += 1
answer[0] += 1
answer[1] += 1
return answer
'algorithm > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- react
- 2018 ์นด์นด์ค ๊ณต์ฑ
- ์๊ณ ๋ฆฌ์ฆ
- ๊ธฐ์ง๊ตญ์ค์น
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ์ผ์ฑ์ฝํ
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ๋ธ๋ฃจํธํฌ์ค
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- merge ์๋ฌ
- ์์ด๋๋ง์๊ธฐ
- ํ์ด์ฌ
- dfs
- merge์๋ฌ
- git ๋ฏธ๋ฌ๋ง
- BFS
- 21609 ์์ด ์คํ๊ต
- ์ผ์ฑ๊ธฐ์ถ
- dp
- swea
- Python
- ๋ณด์์ผํ
- ๋ฐฑ์ค
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ