[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ์ด ๋ฐฉ๋ฒ
๐ก ํ๋ฝ ์กฐ๊ฑด : ๊ฐ์ ๋จ์ด์ธ ๊ฒฝ์ฐ, ๋๋ง์๊ธฐ๊ฐ ์ฑ๋ฆฝ์ด ์ ๋๋ ๊ฒฝ์ฐ
๊ฒ์ ์งํ ์ ๋ณด ์ด๊ธฐํ
- ๋ช ๋ฒ์งธ ๊ฒ์(๋ผ์ด๋)์ธ์ง ์ ์ฅํ ๋ณ์์, ํ์ฌ ์ฐจ๋ก๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ ์์ฑํ๋ค.
- ๋ ๋ฒ์งธ ๋จ์ด๋ถํฐ ์ํํ๋ฏ๋ก ๋ชจ๋ 1๋ก ์ค์ ํ๋ค.
- ํ์ฌ ๋จ์ด์ ์ฒซ ๊ธ์์ ๋น๊ตํ๊ธฐ ์ํด, ์ง์ ๋จ์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์๋ฅผ ์์ฑํ๋ค.
- ์ฒซ ๋ฒ์งธ ๋จ์ด์ ๋ง์ง๋ง ๋จ์ด๋ฅผ ์ ์ฅํ๋ค.
- ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉ๋ ๋จ์ด๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค. (set ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.)
- ๋งจ ์ฒ์ ์ธ๋ฑ์ค์ ์ฒซ ๋ฒ์งธ ๋จ์ด๋ฅผ ์ ์ฅํ๋ค.
๋จ์ด ๋ฆฌ์คํธ ์ํ
- ์ฐจ๋ก๊ฐ ์ฌ๋ ์์ ๊ฐ์์ง๋ฉด ๊ฒ์ ํ์๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ์ฐจ๋ก๋ฅผ 1๋ก ๋ค์ ์ด๊ธฐํํ๋ค. ๊ทธ๊ฒ ์๋๋ฉด ์ฐจ๋ก๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
- ๊ฐ ๋จ์ด๋ฅผ ํ์ธํ๋ฉฐ, ํ์ฌ ๋จ์ด๊ฐ ๋๋ง์๊ธฐ ๊ท์น์ ๋ง๋์ง์ ์ค๋ณต ๋จ์ด์ธ์ง๋ฅผ ํ์ธํ๋ค.
- ์ฒซ ๋ฒ์งธ ๊ธ์์ ์ด์ ์ ์ ์ฅํ ๋ง์ง๋ง ๊ธ์๊ฐ ์ผ์นํ์ง ์์ผ๋ฉด ๋๋ง์๊ธฐ๊ฐ ์ฑ๋ฆฝ๋์ง ์๋๋ค.
- ์ฌ์ฉํ ๋จ์ด๋ฅผ ๋ด์ ๋ฆฌ์คํธ์ ํ์ฌ ๋จ์ด๊ฐ ์๋ค๋ฉด ์ค๋ณต๋ ๋จ์ด๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
- ๊ท์น์ ์๋ฐํ๊ฑฐ๋ ์ค๋ณต ๋จ์ด๊ฐ ๋์ค๋ฉด ํ๋ฝ์์ ๋ฒํธ์ ๋ผ์ด๋๋ฅผ ๋ฐํํ๋ค.
- ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ํ์ฌ ๋จ์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ์ ์ฅํ๊ณ , ํ์ฌ ๋จ์ด๋ฅผ ์ฌ์ฉ๋ ๋จ์ด๋ฅผ ์ ์ฅํ๋ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
ํ๋ฝ์๊ฐ ์๋ ๊ฒฝ์ฐ
- ๋ชจ๋ ๋จ์ด๋ฅผ ๋ฌธ์ ์์ด ๋๋ง์๊ธฐ ๊ท์น์ ๋ง๊ฒ ๋งํ ๊ฒฝ์ฐ [0, 0]์ ๋ฐํํ๋ค.
Solution
def solution(n, words):
game, cnt = 1, 1 # ๊ฒ์ ํ์, ์ฐจ๋ก
end = words[0][-1] # ์ฒซ ๋ฒ์งธ ๋จ์ด ๋ ์ ์ฅ
used = [words[0]] # ์ฌ์ฉํ ๋จ์ด ์ ์ฅ
for i in words[1:]:
if cnt >= n:
game += 1
cnt = 1
else:
cnt += 1
if i[0] != end or i in used: # ๋๋ง์๊ธฐ ์ฑ๋ฆฝ ํ์ธ/๊ฐ์ ๋จ์ด ์ฒดํฌ
return [cnt, game]
end = i[-1] # ๋ง์ง๋ง ๊ธ์ ์ ์ฅ
used.append(i)
return [0, 0]
๊ฐ์ ํ ์
- ๋จ์ด ์ค๋ณต ํ์ธ ์ used ๋ฆฌ์คํธ์ ๋งค๋ฒ in ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ๊ฒ์ํ๋ ๋ถ๋ถ์ ๊ฐ์ ํ ์ ์๋ค. ๋ฆฌ์คํธ์์์ in ์ฐ์ฐ์ O(n)์ ์๊ฐ์ด ์์๋๋ฏ๋ก, ๋จ์ด๊ฐ ๋ง์์๋ก ์๊ฐ์ด ์ฆ๊ฐํ๋ค.
- set ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋จ์ด ์ค๋ณต ํ์ธ์ด O(1)์ ์๊ฐ์ผ๋ก ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋ ์ ์๋ค. used ๋ฆฌ์คํธ ๋์ used ์งํฉ์ ํ์ฉํ์ฌ ์ค๋ณต ๊ฒ์ฌ๋ฅผ ๋น ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ ์ ์๋ค.
๊ฐ์ ๋ ์ฝ๋
def solution(n, words):
...
used = {words[0]} # ์ฌ์ฉํ ๋จ์ด๋ฅผ ์ ์ฅํ ์งํฉ์ผ๋ก ์ด๊ธฐํ
for i in words[1:]:
...
used.add(i) # ์งํฉ์ ๋จ์ด ์ถ๊ฐ
return [0, 0]
๐ฉ๐ป ํ๊ณ
์ค๋ณต ๋จ์ด๋ฅผ ์ฒดํฌํ๋ ์ฝ๋์์ ๋ฌธ์ ๊ฐ ๋ง์๋ค. ์ฒ์์๋ ๊ธฐ์กด ๋ฆฌ์คํธ์์ ์ค๋ณต๋ ๋จ์ด๊ฐ ์๋์ง ์ฒดํฌํ๋๋ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์๋ค.
if i in words[:words.index(i)]:
์ ์ฝ๋์ฒ๋ผ ์์ฑํ๋ฉด, words.index(i)๋ ํด๋น ๋จ์ด๊ฐ ๋ฆฌ์คํธ์์ ์ฒ์ ๋ํ๋ ์์น๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์, ์ค๋ณต ๋จ์ด๊ฐ ์์ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์์น์์ ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ๋ ๋จ์ด๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ํ์ธํด์ผ ํ๋ค.
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ๊ทค ๊ณ ๋ฅด๊ธฐ (Greedy/Python) (0) | 2024.11.16 |
|---|---|
| [Programmers] L2. ๊ตฌ๋ช ๋ณดํธ (Python/ํฌ ํฌ์ธํฐ) (0) | 2024.11.15 |
| [Programmers] L2. ์ ํ์ ์๊ฐ ์ด๋ (Python) (0) | 2024.11.11 |
| [Programmers] L2. ์นดํซ (์์ ํ์/Python) (0) | 2024.11.11 |
| [Programmers] L2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (Python) (0) | 2024.11.11 |