๐ ํ์ด์ฌ ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 ≤ x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ ์ ํ ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
๐ ์ ์ถ๋ ฅ ์
์ถ์ธก)
๊ดํธ์ง์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด ์ค๋นํ๋ค.
๋ฌธ์์ด s๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด ๋งจ์์ ๊ฒ์ popํด ๋ค๋ก appendํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ์ ์ ์ํค๊ณ ๋ฌธ์์ด๋ก ํฉ์ณ์ค๋ค (์ฒ์ ํ์ ์ด ํ์์๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ฅ)
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฌธ์์ด์์ ๊ดํธ์ง ๋ฐฐ์ด for๋ฌธ์ ๋๋ ค ์ง์ ์ฐพ์ผ๋ฉด ์ญ์ ํ๋ ๋ฐฉ์์ ๋ฐ๋ณตํ๋ค.
๋์ 3๊ฐ์ ๊ดํธ์ง์ด ์์ ๊ฒฝ์ฐ ๊ฐ๊ฐ flag๋ฅผ 0์ผ๋ก ๋ฐ๊พธ์ด์ฃผ๊ณ ๋ชจ๋ 0์ด ๋๋ฉด ์นด์ดํ ์์ด ๋์ค๊ธฐ
text๊ธธ์ด๊ฐ 0์ด๋๋ฉด ๋ชจ๋ ์ง์๋์ผ๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ๋ฌธ์์ด์ด๋ผ ์นด์ดํ ํ๋ค
์ด๋ฅผ ๋ฐ๋ณตํด์ ๋ง์ง๋ง์ ์นด์ดํธ๋ฅผ ๋ฐํ
์์ค์ฝ๋)
* 1์ฐจ) ์คํจ : ์ ํ๋ 78.6
def solution(s):
answer = 0
bracket = ['()', '[]', '{}']
s_list = list(s)
for i in range(len(s)):
text = ""
if i != 0:
s_list.append(s_list.pop(0))
text = ''.join(one for one in s_list)
else :
text = s
flag_list = [1, 1, 1]
flag = True
while flag:
if len(text) == 0 :
answer += 1
break
if flag_list == [0, 0, 0]:
break
for x in range(len(bracket)) :
if bracket[x] in text:
text = text.replace(bracket[x], "")
else:
flag_list[x] = 0
pass
return answer
* 2์ฐจ) ์คํจ : ์ ํ๋ 92.9 ๐ญ ์ ๋จํ๋์ ์ผ์ด์ค๊ฐ
def solution(s):
answer = 0
bracket = ['()', '[]', '{}']
s_list = list(s)
for i in range(len(s)):
text = ""
if i != 0:
s_list.append(s_list.pop(0))
text = ''.join(one for one in s_list)
else :
text = s
flag_list = [1, 1, 1]
flag = True
while flag:
if len(text) == 0 :
answer += 1
break
if flag_list == [0, 0, 0]:
if text.find(bracket[0]) and text.find(bracket[1]) and text.find(bracket[2]):
break
for x in range(len(bracket)) :
if bracket[x] in text:
text = text.replace(bracket[x], "")
else:
flag_list[x] = 0
pass
return answer
* 3์ฐจ) ์ฑ๊ณต
def solution(s):
answer = 0
bracket = ['(',')', '[',']', '{','}']
s_list = list(s)
for i in range(len(s)):
if i != 0:
s_list.append(s_list.pop(0))
stack = []
for one in s_list:
stack.append(one)
stack_len = len(stack)
if stack_len >= 2:
for x in range(0,len(bracket),2) :
if stack[stack_len-2:stack_len] == bracket[x:x+2]:
stack = stack[:stack_len-2]
if len(stack) == 0 :
answer += 1
return answer
๋ฆฌ๋ทฐ)
1์ฐจ)
ํ๋๊ทธ๋ฅผ ์ธ์ธ๊ธฐ์ ์ ์ ์๊ฐํด๋ด์ผ ํ ๋ฏํ๋ค.
์๋๋ฉด ์ง๊ธ ๋ด ๋ก์ง๋๋ก๋ ๋ง์ฝ ({}) ๊ดํธ ๊ฒฝ์ฐ () ์ฐจ๋ก์์ ์ด๊ฑธ ๋ชป์ฐพ์์ ํ๋๊ทธ๋ฅผ 0์ผ๋ก ๋ฃ๊ณ {} ์ด๊ฑธ ์ง์ฐ๊ณ ๋์์ผ ()๋ฅผ ํ๋ณํ ์ ์๋๋ฐ ์ด๋ฏธ ํ๋๊ทธ๋ 0์ด ๋ฌ๊ธฐ ๋๋ฌธ
2์ฐจ)
ํต๊ณผํ์ง ๋ชปํ 1๋ฒ ์ผ์ด์ค ๋ญ์ง.. 1๋ฒ ์ผ์ด์ค๋ก ๊ณ ๋ฏผํ๋ค๊ฐ ์ ์ ์ด๊ฑฐ๋ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ์๋๊ฒ ์๊ฐ๋์ ํ๋ฒ๊ฑฐ ๋ฌธ์ ์์ ์ผ๋ stack ๋ฐฉ์์ ์์ฉํ๋ ๋ฐ๋ก 3์ฐจ์์ ์ฑ๊ณต ์ค์ค์ค!!!! ์ด๋ฐ ์ ํ์ด ๋ฐ๋ก ์คํ ์ ํ!
Programmers] ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ
๐ ํ์ด์ฌ ์ผ๋ก ํ์ด ๐ ๋ฌธ์ ๋งํฌ : ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์
littlezero48.tistory.com
๊ทธ๋ฐ๋ฐ! 3์ฐจ ๋ฐฉ์์ผ๋ก ํต๊ณผํ๊ฑฐ๋ 2์ฐจ์ ํ๋์ ์ผ์ด์ค๋ง ์คํจํ ๊ฒฝ์ฐ๋ฅผ ๋น๊ตํ๋ฉด 2์ฐจ๊ฐ ๋ ๋ง๋์๋๊ฒ ๋น ๋ฆ...
2์ฐจ๋ for/while/for ๋ก ์ฌ์ฉํ 3์ค ๋ฌธ์ธ๋ฐ ํจ์ฌ๋ ์๋๊ฐ ๋น ๋ฅด๋ค ๐ฏ๐ฏ
2์ฐจ๊ฐ ํต๊ณผํ์ง ๋ชปํ ์ผ์ด์ค์ ๋ํด ์ข๋ ์๊ฐํด๋ด์ผํ ๋ฏ ํ๋ค.
'Coding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Programmers] ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) | 2023.03.18 |
---|---|
Programmers] [1์ฐจ] ์บ์ (0) | 2023.03.18 |
Programmers] ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2023.03.13 |
Programmers] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2023.03.07 |
Programmers] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (0) | 2023.03.06 |