[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ์ด
1๏ธโฃ ๋ฌธ์์ด ๊ธธ์ด ๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
2๏ธโฃ ๋ฌธ์์ด ์ค ํ์ฌ ์์น ์ ๊น์ง ์ฌ๋ผ์ด์ฑ ํ ํ, ํ์ฌ ๋ฌธ์๊ฐ ์ฌ๋ผ์ด์ฑ ํ ๋ฆฌ์คํธ์ ์๋์ง ํ์ธํ๋ค.
if s[i] not in s[:i]:
...
else:
...
- ๋ฌธ์ not in ๋ฆฌ์คํธ : ๋ฌธ์๊ฐ ๋ฆฌ์คํธ์ ์์ผ๋ฉด True ๋ฅผ ๋ฐํ
- ๋ฌธ์ in ๋ฆฌ์คํธ : ๋ฌธ์๊ฐ ๋ฆฌ์คํธ์ ์์ผ๋ฉด True ๋ฅผ ๋ฐํ
3๏ธโฃ ์์ผ๋ฉด -1์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ณ , ์์ผ๋ฉด ๋ฌธ์์ด์์ ํ์ฌ ์์น ์ด์ ๋ถํฐ ๋งจ ์๊น์ง ๊ฑฐ๊พธ๋ก ํ์ธํ๋ค.
for j in s[i-1::-1]:
- ๋ฆฌ์คํธ[start:end:step] : step ์ -1 ์ ๋ฃ์ผ๋ฉด ๋ค์์๋ถํฐ ์ฌ๋ผ์ด์ฑ์ ํ๋ค.
4๏ธโฃ ๋ค์์๋ถํฐ ํ์ธํ๋ฉด์ ์นด์ดํธ ํ๊ณ , ํ์ฌ ์์น์ ๊ฐ์ ๋ฌธ์๊ฐ ๋ํ๋๋ฉด ํ์ฌ ๋ฃจํ๋ฅผ ์ค๋จํ๋ค.
5๏ธโฃ ๊ทธ๋ฆฌ๊ณ ์นด์ดํธ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
Solution
def solution(s):
answer = []
for i in range(len(s)):
cnt = 0
if s[i] not in s[:i]:
answer.append(-1)
else:
for j in s[i-1::-1]:
cnt += 1
if s[i] == j:
break
answer.append(cnt)
return answer
๊ฐ์ ํ ์
์ฃผ์ด์ง ํจ์๋ ๊ฐ ๋ฌธ์์ ์ด์ ๋ฑ์ฅ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ๋ค๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด์ cnt๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์๋ค. ํ์ฌ ์ฝ๋๋ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง๋ง, s์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง ๊ฒฝ์ฐ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ด์ ๋ฑ์ฅ ์์น๋ฅผ ๊ธฐ๋กํด๋๊ณ ๋ฐ๋ก ์ ๊ทผํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
- ๊ฐ ๋ฌธ์์ ์ด์ ๋ฑ์ฅ ์์น๋ฅผ ๊ธฐ๋กํ๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ, ๋ฌธ์์ด์ ํ ๋ฒ ์ํํ ๋๋ง๋ค ๋ฐ๋ก๋ฐ๋ก ์ด์ ๋ฑ์ฅ ์์น๋ฅผ ํ์ธํ๋๋ก ํ๋ค.
- ๋งค ๋ฌธ์๋ฅผ ํ์ํ ๋ ํด๋น ๋ฌธ์๊ฐ ์ด์ ์ ๋ฑ์ฅํ ์ ์ด ์๋ค๋ฉด -1์, ์ด์ ์ ๋ฑ์ฅํ ์์น๊ฐ ์๋ค๋ฉด ๊ทธ ์์น์ ํ์ฌ ์์น์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ์ฌ answer์ ์ถ๊ฐํ๋ค.
๊ฐ์ ํ ์ฝ๋
def solution(s):
answer = []
last_seen = {} # ๊ฐ ๋ฌธ์์ ๋ง์ง๋ง ์์น๋ฅผ ์ ์ฅํ๋ ๋์
๋๋ฆฌ
for i, char in enumerate(s):
if char in last_seen:
# ์ด์ ์ ๋ฑ์ฅํ๋ค๋ฉด, ํ์ฌ ์์น์ ์ด์ ์์น์ ์ฐจ์ด๋ฅผ ๊ณ์ฐ
answer.append(i - last_seen[char])
else:
# ์ด์ ์ ๋ฑ์ฅํ์ง ์์๋ค๋ฉด -1 ์ถ๊ฐ
answer.append(-1)
# ํ์ฌ ์์น๋ฅผ ๋ง์ง๋ง ์์น๋ก ๊ฐฑ์
last_seen[char] = i
return answer
- last_seen ๋์ ๋๋ฆฌ๋ ๊ฐ ๋ฌธ์์ ๋ง์ง๋ง ๋ฑ์ฅ ์์น๋ฅผ ์ ์ฅํ๋ค.
- ๊ฐ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ์ํํ๋ฉด์, ๋์ ๋๋ฆฌ์์ ์ด์ ๋ฑ์ฅ ์์น๋ฅผ ํ์ธํ์ฌ ํ์ํ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐ๋ก ๊ณ์ฐํ ์ ์๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์์ด์ ํ ๋ฒ๋ง ์ํํ๋ฉด์ ํด๊ฒฐํ ์ ์์ด ์๊ฐ ๋ณต์ก๋๊ฐ O(n)์ผ๋ก ์ค์ด๋ค์ด ํจ์จ์ฑ์ด ๋์์ง๋ค.
'๐งฉ Algorithm > [Programmers] Level 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L1. ๋ชจ์๊ณ ์ฌ (์์ ํ์/Python) (0) | 2024.11.06 |
|---|---|
| [Programmers] L1. ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (Python) (1) | 2024.11.06 |
| [Programmers] L1. ์ผ์ด์ฌ (Python) (0) | 2024.11.06 |
| [Programmers] L1. ์์ฐ (Python) (0) | 2024.10.30 |
| [Programmers] L1. ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ๋ฌธ์์ด (Python) (0) | 2024.10.25 |