๐ ํ์ด์ฌ ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
๋ฌธ์์ด s๊ฐ ์ ๋ ฅ๋์์ ๋ ๋ค์ ๊ท์น์ ๋ฐ๋ผ์ ์ด ๋ฌธ์์ด์ ์ฌ๋ฌ ๋ฌธ์์ด๋ก ๋ถํดํ๋ ค๊ณ ํฉ๋๋ค.
- ๋จผ์ ์ฒซ ๊ธ์๋ฅผ ์ฝ์ต๋๋ค. ์ด ๊ธ์๋ฅผ x๋ผ๊ณ ํฉ์๋ค.
- ์ด์ ์ด ๋ฌธ์์ด์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด๋๊ฐ๋ฉด์, x์ x๊ฐ ์๋ ๋ค๋ฅธ ๊ธ์๋ค์ด ๋์จ ํ์๋ฅผ ๊ฐ๊ฐ ์ ๋๋ค. ์ฒ์์ผ๋ก ๋ ํ์๊ฐ ๊ฐ์์ง๋ ์๊ฐ ๋ฉ์ถ๊ณ , ์ง๊ธ๊น์ง ์ฝ์ ๋ฌธ์์ด์ ๋ถ๋ฆฌํฉ๋๋ค.
- s์์ ๋ถ๋ฆฌํ ๋ฌธ์์ด์ ๋นผ๊ณ ๋จ์ ๋ถ๋ถ์ ๋ํด์ ์ด ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ๋จ์ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ข ๋ฃํฉ๋๋ค.
- ๋ง์ฝ ๋ ํ์๊ฐ ๋ค๋ฅธ ์ํ์์ ๋ ์ด์ ์ฝ์ ๊ธ์๊ฐ ์๋ค๋ฉด, ์ญ์ ์ง๊ธ๊น์ง ์ฝ์ ๋ฌธ์์ด์ ๋ถ๋ฆฌํ๊ณ , ์ข ๋ฃํฉ๋๋ค.
๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ ๊ณผ์ ๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ค๋ก ๋ถํดํ๊ณ , ๋ถํดํ ๋ฌธ์์ด์ ๊ฐ์๋ฅผ return ํ๋ ํจ์ solution์ ์์ฑํ์ธ์.
๐ ์ ํ ์ฌํญ
- 1 ≤ s์ ๊ธธ์ด ≤ 10,000
- s๋ ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๐ ์ ์ถ๋ ฅ ์

์ถ์ธก)
1. ์ฒซ๋ฌธ์๋ฅผ ์ ์ฅํ ๋ณ์x๋ฅผ ๋น ๋ฌธ์์ด๋ก ์ ์ธํ๋ค.
2. start_Idx๋ฅผ ์ ์ธํ๋ค.
2. x ์นด์ดํธ์ x๊ฐ ์๋ ์นด์ดํธ๋ฅผ 0์ผ๋ก ์ ์ธํ๋ค.
2. ๋ฌธ์์ด ๊ธธ์ด๋งํผ for๋ฌธ์ ๋๋ฆฐ๋ค.
2. ๋ง์ฝ ์ฒซ๋ฌธ์๊ฐ ๋น์ด์๋ค๋ฉด
- ์ฒซ๋ฌธ์ x๋ฅผ ๋ณ์์ ๋์ ํ๊ณ , ์ง๊ธ ์ธ๋ฑ์ค๋ฅผ start_Idx์ ๋์ ํ๋ค.
2. ๋ง์ฝ x์ ํ์ฌ ๋ฌธ์์ด์ด
- ๊ฐ์ผ๋ฉด x ์นด์ดํธ๋ฅผ 1 ์ฌ๋ฆฐ๋ค.
- ๋ค๋ฅด๋ฉด x๊ฐ ์๋ ์นด์ดํธ๋ฅผ 1์ฌ๋ฆฐ๋ค.
3. ๋ง์ฝ x์นด์ดํธ๊ฐ x๊ฐ ์๋ ์นด์ดํธ์ ๊ฐ์ผ๋ฉด
- ๋ฆฌ์คํธ์ s์ ๋ฌธ์์ด์์ start_Idx๋ถํฐ ํ์ฌ Idx๊น์ง ๋ฌธ์์ด์ ์๋ผ ๋ฃ๋๋ค
๊ทธ๋ฆฌ๊ณ start_Idx๋ x ์นด์ดํธ, x๊ฐ ์๋ ์นด์ดํธ๋ฅผ ๋ชจ๋ ์ด๊ธฐํํ๋ค.
for๋ฌธ์ ๋์ ๋ฆฌ์คํธ์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
์์ค์ฝ๋)
* 1์ฐจ) ์คํจ
def solution(s):
x = ""
start_Idx = 0
x_Cnt = 0
x_Not_Cnt = 0
answer_list = []
for i in range(0, len(s)):
if x == "":
x = s[i]
start_Idx = i
x_Cnt += 1
continue
if x == s[i]:
x_Cnt += 1
else :
x_Not_Cnt += 1
if x_Cnt == x_Not_Cnt:
answer_list.append(s[start_Idx: i+1])
x_Cnt = 0
x_Not_Cnt = 0
x = ""
return len(answer_list)
* 2์ฐจ) ์ฑ๊ณต
def solution(s):
x = ""
start_Idx = 0
x_Cnt = 0
x_Not_Cnt = 0
answer_list = []
for i in range(0, len(s)):
if x == "":
x = s[i]
start_Idx = i
x_Cnt += 1
continue
if x == s[i]:
x_Cnt += 1
else :
x_Not_Cnt += 1
if x_Cnt == x_Not_Cnt:
answer_list.append(s[start_Idx: i+1])
x_Cnt = 0
x_Not_Cnt = 0
x = ""
if x_Cnt != 0 or x_Not_Cnt != 0:
answer_list.append(s[start_Idx: i + 1])
return len(answer_list)
๋ฆฌ๋ทฐ)
๋ญ๊ฐ ์ค๊ฐ์ค๊ฐ ์์ฝ๊ฒ ๋์น๋ ๋ถ๋ถ์ด ์๋ค. ๊ทธ๋ฐ ๋ถ๋ถ์ ์ฒ์๋ถํฐ ์ฒดํฌํ ์ ์๊ฒ ๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ ์ฝ์ด์ผ ๊ฒ ๋ค .
๋ฌธ์ ์ค๋ช 4๋ฒ์งธ๊บผ๋ฅผ ์ฒ์์ ์ฒ๋ฆฌํด์ฃผ์ง ๋ชปํด์ ์คํจ! ์ด๋ฐ๊ฑฐ ๋น ๋จ๋ฆฌ๋ฉด ์๋๋ค๊ณ
'Coding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Programmers] ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ (0) | 2023.02.04 |
|---|---|
| Programmers] ๋ช ์์ ์ ๋น(1) (0) | 2023.01.31 |
| Programmers] ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ (0) | 2023.01.31 |
| Programmers] ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์ (2) | 2023.01.31 |
| Programmers] ์ ์์ผ๊ฐํ (0) | 2023.01.24 |
