11/30, 12/1 ์ดํ ๋์ LV2 ๋ฌธ์ ๋ค์ 1ํ์ด์ง ๊ฐ๋ ํ์๋ค.... ์ฝ 20๋ฌธ์ ..
(์ ๋ต๋ฅ ์ด ๋์ ๊ธฐ์ค์ผ๋ก ํ์ด ์์ฒญ ์ค๋ ๊ฑธ๋ฆฌ์ง ์์๋ค!)
1ํ์ด์ง ๊ฐ๋ ํ์ด๋ณด๋ฉด์ LV1๊ณผ์ ์ฐจ์ด์ ์ ๋ณด๋ฉด, ํ์คํ ๊ธฐ๋ณธ์ ์ธ ๊ตฌํ์ ์๊ตฌํ๋ LV 1๊ณผ๋ ๋ฌ๋ฆฌ, LV 2์ ๊ฒฝ์ฐ ์ํ์ ์ธ ์ฌ๊ณ ๋ ฅ๊ณผ ์๋ฃ๊ตฌ์กฐ ๋ฑ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์์ ์ฐจ์ด๋ฅผ ๋ณด์๋ค.
์๋ ์์ฝํ ๋ฌธ์ ๋ค์ LV2 1ํ์ด์ง๋ฅผ ํ๋ฉด์ ์ ๋ฆฌ๊ฐ ํ์ํ? ๋ฌธ์ ๋ค์ ์ถ๋ ค๋๋ค.
์ ๋ต๋ฅ ์ด ๋ฎ์์ง์๋ก ์์ฑํ๋ ๋ฌธ์ ์๋ ๊ธ ์๊ฐ ์ค์ด๋ค ๋ฏ ์ถ๋ค..
๋ฌธ์ ์ค๋ช
์ง์ง์ด ์ ๊ฑฐํ๊ธฐ๋, ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ ๊ฐ์ง๊ณ ์์ํฉ๋๋ค. ๋จผ์ ๋ฌธ์์ด์์ ๊ฐ์ ์ํ๋ฒณ์ด 2๊ฐ ๋ถ์ด ์๋ ์ง์ ์ฐพ์ต๋๋ค. ๊ทธ๋ค์, ๊ทธ ๋์ ์ ๊ฑฐํ ๋ค, ์๋ค๋ก ๋ฌธ์์ด์ ์ด์ด ๋ถ์ ๋๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํด์ ๋ฌธ์์ด์ ๋ชจ๋ ์ ๊ฑฐํ๋ค๋ฉด ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์๋์ง ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์์ผ๋ฉด 1์, ์๋ ๊ฒฝ์ฐ 0์ ๋ฆฌํดํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฌธ์์ด S = baabaa ๋ผ๋ฉด
b aa baa โ bb aa โ aa โ ์ ์์๋ก ๋ฌธ์์ด์ ๋ชจ๋ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก 1์ ๋ฐํํฉ๋๋ค.
- ์ ํ์ฌํญ
๋ฌธ์์ด์ ๊ธธ์ด : 1,000,000์ดํ์ ์์ฐ์
๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
def solution(s):
stack = []
for i in s:
if len(stack) == 0:
stack.append(i)
elif stack[-1] == i:
stack.pop()
else:
stack.append(i)
if len(stack) == 0:
return 1
else:
return 0
< ํ์ด ๊ณผ์ >
์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค
๋ฌธ์ ์ค๋ช
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค. ๊ตฌ๋ช ๋ณดํธ๋ ์์์ ํ ๋ฒ์ ์ต๋ 2๋ช ์ฉ ๋ฐ์ ํ ์ ์๊ณ , ๋ฌด๊ฒ ์ ํ๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๊ฐ [70kg, 50kg, 80kg, 50kg]์ด๊ณ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ด 100kg์ด๋ผ๋ฉด 2๋ฒ์งธ ์ฌ๋๊ณผ 4๋ฒ์งธ ์ฌ๋์ ๊ฐ์ด ํ ์ ์์ง๋ง 1๋ฒ์งธ ์ฌ๋๊ณผ 3๋ฒ์งธ ์ฌ๋์ ๋ฌด๊ฒ์ ํฉ์ 150kg์ด๋ฏ๋ก ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ์ด๊ณผํ์ฌ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๊ตฌ๋ช ๋ณดํธ๋ฅผ ์ต๋ํ ์ ๊ฒ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ๋ฅผ ๋ด์ ๋ฐฐ์ด people๊ณผ ๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ limit๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ์ํ ๊ตฌ๋ช ๋ณดํธ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์ ํ์ฌํญ
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋์ 1๋ช ์ด์ 50,000๋ช ์ดํ์ ๋๋ค.
๊ฐ ์ฌ๋์ ๋ชธ๋ฌด๊ฒ๋ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ 40kg ์ด์ 240kg ์ดํ์ ๋๋ค.
๊ตฌ๋ช ๋ณดํธ์ ๋ฌด๊ฒ ์ ํ์ ํญ์ ์ฌ๋๋ค์ ๋ชธ๋ฌด๊ฒ ์ค ์ต๋๊ฐ๋ณด๋ค ํฌ๊ฒ ์ฃผ์ด์ง๋ฏ๋ก ์ฌ๋๋ค์ ๊ตฌ์ถํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
from collections import deque
def solution(people, limit):
answer = 0
people.sort()
queue = deque(people)
while queue:
if len(queue) >= 2:
if queue[0] + queue[-1] > limit:
queue.pop()
answer += 1
else:
queue.pop()
queue.popleft()
answer += 1
else:
if queue[0] <= limit:
queue.pop()
answer += 1
return answer
def solution(people, limit):
people.sort()
answer = 0
first_idx = 0
last_idx = len(people)-1
while first_idx < last_idx:
if people[first_idx] + people[last_idx] <= limit:
first_idx += 1
last_idx -= 1
answer += 1
if first_idx == last_idx:
answer += 1
return answer
< ํ์ด ๊ณผ์ >
์ฐ์ ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ์ฃผ์ด์ง people ๋ฆฌ์คํธ ์ฆ ๋ชธ๋ฌด๊ฒ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์ฃผ์ด์ง ๋ชธ๋ฌด๊ฒ ๋ฆฌ์คํธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ์ ์ต๋ 2๋ช
๋ง์ด ๋ณดํธ์ ํ์นํ ์ ์์ผ๋ฏ๋ก, ๋ชธ๋ฌด๊ฒ ๋ฆฌ์คํธ์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ๋ํด๊ฐ๋ฉฐ limit๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋๋ช
์ด ํ ๋ณดํธ์ ํ์นํ ๊ฒ์ผ๋ก ํ๋จํ๊ณ ๋ฌธ์ ํ์ด๋ฅผ ์งํํ๋ค. (์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ ๊ฑฐํ๋ ํจ์๊ฐ ํ์ํ๊ธฐ์ deque๋ฅผ ์ฌ์ฉํ์๋ค.)
๋ฌธ์ ์ค๋ช
๋ ์์ ์ต์๊ณต๋ฐฐ์(Least Common Multiple)๋ ์ ๋ ฅ๋ ๋ ์์ ๋ฐฐ์ ์ค ๊ณตํต์ด ๋๋ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด 2์ 7์ ์ต์๊ณต๋ฐฐ์๋ 14๊ฐ ๋ฉ๋๋ค. ์ ์๋ฅผ ํ์ฅํด์, n๊ฐ์ ์์ ์ต์๊ณต๋ฐฐ์๋ n ๊ฐ์ ์๋ค์ ๋ฐฐ์ ์ค ๊ณตํต์ด ๋๋ ๊ฐ์ฅ ์์ ์ซ์๊ฐ ๋ฉ๋๋ค. n๊ฐ์ ์ซ์๋ฅผ ๋ด์ ๋ฐฐ์ด arr์ด ์ ๋ ฅ๋์์ ๋ ์ด ์๋ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์.
- ์ ํ ์ฌํญ
arr์ ๊ธธ์ด 1์ด์, 15์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
arr์ ์์๋ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
def solution(arr):
answer = max(arr)
while True:
cnt = 0
for i in arr:
if answer % i == 0:
cnt += 1
else:
break
if cnt == len(arr):
break
answer += 1
return answer
< ํ์ด ๊ณผ์ >
์ฃผ์ด์ง 2๊ฐ์ ์ซ์๋ก ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ ํ์ด๋ดค์ผ๋ ์ฃผ์ด์ง ๋ฆฌ์คํธ ์ ์ฒด์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ ์ฒ์์ด์ด์ ๋๋ฆ ์๊ฐ ํฌ์๋ฅผ ํ์๋ค.
for๋ฌธ๋ณด๋ค๋ while๋ฌธ์ผ๋ก ๋ฐ๋ณตํ์ฌ ์งํํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ์ฌ ์งํ!
๋ฌธ์ ์ค๋ช
H-Index๋ ๊ณผํ์์ ์์ฐ์ฑ๊ณผ ์ํฅ๋ ฅ์ ๋ํ๋ด๋ ์งํ์ ๋๋ค. ์ด๋ ๊ณผํ์์ H-Index๋ฅผ ๋ํ๋ด๋ ๊ฐ์ธ h๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์ํค๋ฐฑ๊ณผ1์ ๋ฐ๋ฅด๋ฉด, H-Index๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํฉ๋๋ค.
์ด๋ค ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ nํธ ์ค, h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด hํธ ์ด์์ด๊ณ ๋๋จธ์ง ๋ ผ๋ฌธ์ด h๋ฒ ์ดํ ์ธ์ฉ๋์๋ค๋ฉด h์ ์ต๋๊ฐ์ด ์ด ๊ณผํ์์ H-Index์ ๋๋ค.
์ด๋ค ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์ธ์ฉ ํ์๋ฅผ ๋ด์ ๋ฐฐ์ด citations๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ๊ณผํ์์ H-Index๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์ ํ์ฌํญ
๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์๋ 1ํธ ์ด์ 1,000ํธ ์ดํ์ ๋๋ค.
๋ ผ๋ฌธ๋ณ ์ธ์ฉ ํ์๋ 0ํ ์ด์ 10,000ํ ์ดํ์ ๋๋ค.
def solution(citations):
citations.sort()
for i in range(len(citations)):
if citations[i] >= len(citations) - i:
return len(citations) - i
return 0
< ํ์ด ๊ณผ์ >
๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ์ฃผ์ด์ง citations ๋ฆฌ์คํธ๋ฅผ sortํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์ดํ for ๋ฌธ์ ๋๋ ค ๋
ผ๋ฌธ์ ์ธ์ฉํ์๋ค ์ค h๋ฒ ์ด์ ์ธ์ฉ๋ ๋
ผ๋ฌธ ๋ค์ด์ด์ผ ํ๊ณ ์ด์ธ์ ๋
ผ๋ฌธ์ด h๋ฒ ์ดํ์ฌ์ผ ํ๋ฏ๋ก len(citations) - i๋ก returnํ๋๋ก ์ฝ๋๋ฅผ ์งฐ๋ค.
์ง์ ์ฝ๋๋ก ๊ตฌํํ๊ธฐ ์ด์ ์ฌ๋ฌ ์ผ์ด์ค๋ฅผ ๋จธ๋ฆฌ๋ก ์๊ฐํด๋ด๊ณ ํ์ด๋ด๋๋ผ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ ๋ฌธ์ .
๋ฌธ์ ์ค๋ช
์บ์
์ง๋๊ฐ๋ฐํ์์ ๊ทผ๋ฌดํ๋ ์ ์ด์ง๋ ์ง๋์์ ๋์ ์ด๋ฆ์ ๊ฒ์ํ๋ฉด ํด๋น ๋์์ ๊ด๋ จ๋ ๋ง์ง ๊ฒ์๋ฌผ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ์ด ๋ณด์ฌ์ฃผ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค.
์ด ํ๋ก๊ทธ๋จ์ ํ ์คํ ์ ๋ฌด๋ฅผ ๋ด๋นํ๊ณ ์๋ ์ดํผ์น๋ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ ๊ฐ ๋ก์ง์ ๋ํ ์ฑ๋ฅ ์ธก์ ์ ์ํํ์๋๋ฐ, ์ ์ด์ง๊ฐ ์์ฑํ ๋ถ๋ถ ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ ์คํ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์ดํผ์น๋ ์ ์ด์ง์๊ฒ ํด๋น ๋ก์ง์ ๊ฐ์ ํ๋ผ๊ณ ๋ฆ๋ฌํ๊ธฐ ์์ํ์๊ณ , ์ ์ด์ง๋ DB ์บ์๋ฅผ ์ ์ฉํ์ฌ ์ฑ๋ฅ ๊ฐ์ ์ ์๋ํ๊ณ ์์ง๋ง ์บ์ ํฌ๊ธฐ๋ฅผ ์ผ๋ง๋ก ํด์ผ ํจ์จ์ ์ธ์ง ๋ชฐ๋ผ ๋๊ฐํ ์ํฉ์ด๋ค.
์ดํผ์น์๊ฒ ์๋ฌ๋ฆฌ๋ ์ ์ด์ง๋ฅผ ๋์, DB ์บ์๋ฅผ ์ ์ฉํ ๋ ์บ์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์คํ์๊ฐ ์ธก์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ์ ๋ ฅ ํ์
์บ์ ํฌ๊ธฐ(cacheSize)์ ๋์์ด๋ฆ ๋ฐฐ์ด(cities)์ ์ ๋ ฅ๋ฐ๋๋ค.
cacheSize๋ ์ ์์ด๋ฉฐ, ๋ฒ์๋ 0 โฆ cacheSize โฆ 30 ์ด๋ค.
cities๋ ๋์ ์ด๋ฆ์ผ๋ก ์ด๋ค์ง ๋ฌธ์์ด ๋ฐฐ์ด๋ก, ์ต๋ ๋์ ์๋ 100,000๊ฐ์ด๋ค.
๊ฐ ๋์ ์ด๋ฆ์ ๊ณต๋ฐฑ, ์ซ์, ํน์๋ฌธ์ ๋ฑ์ด ์๋ ์๋ฌธ์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค. ๋์ ์ด๋ฆ์ ์ต๋ 20์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.- ์กฐ๊ฑด
์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ LRU(Least Recently Used)๋ฅผ ์ฌ์ฉํ๋ค.
cache hit์ผ ๊ฒฝ์ฐ ์คํ์๊ฐ์ 1์ด๋ค.
cache miss์ผ ๊ฒฝ์ฐ ์คํ์๊ฐ์ 5์ด๋ค.
def solution(cacheSize, cities):
answer = 0
idx = 0
cache = []
if cacheSize == 0:
return len(cities) * 5
for c in cities:
city = c.upper()
if city in cache:
cache.remove(city)
cache.append(city)
answer += 1
else:
answer += 5
if idx < cacheSize:
cache.append(city)
idx += 1
else:
cache.pop(0)
cache.append(city)
return answer
< ํ์ด ๊ณผ์ >
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ cache hit๊ณผ cache miss๋ฅผ ์ดํดํ๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค. ์ฒ์๋ค์ด๋ณด๋ ๊ฑฐ๋ผ์..
์งง๊ฒ ์์ฝ์ ํ๋ฉด cache hit๋ ์บ์ ๋ด ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํจ์ ์๋ฏธํ๊ณ cache miss๋ ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋๋ฅผ ์๋ฏธํ๋ค.
def solution(n):
ans = 0
while n > 0:
if n % 2 == 0:
n //= 2
else:
n -= 1
ans += 1
return ans
< ํ์ด ๊ณผ์ >
2์นธ ์ฉ ์๊ฐ ์ด๋ํ ๊ฒฝ์ฐ ๊ฑด์ ์ง ์ฌ์ฉ๋์ด ์ค์ง ์๊ณ , 1์นธ์ฉ ์ด๋ํ๋ฉด ๊ฑด์ ์ง ์ฌ์ฉ๋์ด 1์ฉ ์ค์ด๋ ๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๊ทธ๋๋ ๊ตฌํํ ๋ฌธ์
def solution(n):
dp = [0]*(n+1)
if n < 3:
return n
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n] % 1234567
< ํ์ด ๊ณผ์ >
๋์ ๊ณํ๋ฒ dp๋ฅผ ํ์ฉํ์ฌ n์ด 3๋ฏธ๋ง์ด๋ฉด dp[n] = n์ด๊ณ 3,(n+1)์ ๋ฒ์์ ํํด์ dp[n] = dp[n-2] + dp[n-1]๋ก ๊ณ์ฐํด dp[n]์ ๋ฆฌํดํ๋ค.
๋ฌธ์ ์ค๋ช
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
(), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋ง์ฝ A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, (A), [A], {A} ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, [] ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, ([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋ง์ฝ A, B๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๋ฉด, AB ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด, {} ์ ([]) ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฏ๋ก, {}([]) ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
๋๊ดํธ, ์ค๊ดํธ, ๊ทธ๋ฆฌ๊ณ ์๊ดํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด s๋ฅผ ์ผ์ชฝ์ผ๋ก x (0 โค x < (s์ ๊ธธ์ด)) ์นธ๋งํผ ํ์ ์์ผฐ์ ๋ s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋๊ฒ ํ๋ x์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์ ํ์ฌํญ
s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
def solution(s):
answer = 0
for i in range(len(s)):
stack = []
s += s[0]
s = s[1:]
check = True
for j in s:
if j in ['[', '{', '(']:
stack.append(j)
else:
if not stack:
check = False
break
if j==']' and stack[-1]=='[' or j=='}' and stack[-1]=='{' or j==')' and stack[-1]=='(':
stack.pop()
else:
check = False
break
if not stack and check == True:
answer += 1
return answer
< ํ์ด ๊ณผ์ >
์์ ๋น์ทํ ๊ดํธ๋ฌธ์ ๋ฅผ ํ์๊ธฐ์ ๋น์ทํ ์ ํ(์คํ ์๋ฃ๊ตฌ์กฐ)์ผ๋ก ์๊ฐํ๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค.
์ฒ์ ๋ฌธ์ ๋ฅผ ํ์์ ๋๋ check ์์ด ์งํํ์์ผ๋ ํด๊ฒฐํ์ง ๋ชปํ์๊ณ ์ฃผ์ด์ง stack ์ด ๋น์ด์๋ ๊ฒฝ์ฐ์ check ๊ฐ์ด True์ธ ๊ฒฝ์ฐ์ผ ๋๋ง ํ์ + 1ํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
์ข ๋ ํ์ด์ ์ค๋ช ํ์๋ฉด, ๋๋ '{', '(', '[' ๋ฌธ์๊ฐ ์คํ์ ์ถ๊ฐ๋๋ฉด ์ดํ ๋ฌธ์๊ฐ '}',')',']' ์๋ ๊ฒฝ์ฐ False์ฒ๋ฆฌํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ณ ์, ์ ์ฝ๋ ๋๋ก ์งํํ๊ณ , stack์๋ (, [, { ๊ฐ ์๊ณ ๋ฌธ์ j๊ฐ ์ด๋ฅผ ๋ซ์์ฃผ๋ ๊ดํธ ๋ฌธ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ฉด, ์คํ ๋ด ๋ฌธ์๋ฅผ popํ๋ ๊ณผ์ ์ผ๋ก ์ฝ๋๋ฅผ ์งํํ๋ค.
def solution(arr1, arr2):
answer = [[0]*len(arr2[0]) for _ in range(len(arr1))]
for i in range(len(arr1)):
for j in range(len(arr2[0])):
for k in range(len(arr1[0])):
answer[i][j] += arr1[i][k] * arr2[k][j]
return answer
< ํ์ด ๊ณผ์ >
ํ๋ ฌ๊ณฑ์ ๊ทธ๋๋ก ๊ตฌํํ ๋ฌธ์ .
ํ๋ ฌ ๊ณฑ์์ ์ ์ผ ์ค์ํ ๊ฒ์ AXB์ ์์ด์ A์ ์ด๊ณผ B์ ํ์ ๊ธธ์ด๊ฐ ๊ฐ์์ผํ๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ์ด์ฉํ์ฌ answer 2์ฐจ์๋ฆฌ์คํธ์ len(arr1)๋ ํ์, len(arr2[0])์ ์ด๋ก ๋ํ๋ด์ด ํํํ๋ค.
์ดํ for๋ฌธ์ผ๋ก ํ, ์ด, len(arr1[0]) ์์๋๋ก ์์ฐจํ๋ฉฐ Product ์ฐ์ฐ์ ์งํํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํด๋ด๋ ์ฌ๊ณ ๋ ฅ์ด ํ์คํ ์์ ๋์ด๋ ๋๋. ๋ฌธ์ ๋ฅผ ํ๋ ํ์ด์ ๊ทธ๋ฐ๊ฐ๋ณด๋ค. ๋ฌผ๋ก ์์ง ์ค๋ ฅ์ด ๋ง์ด ๋ถ์กฑํ๊ณ LV 2๋ ์ ๋ต๋ฅ ์ด ๋์ ๋ฌธ์ ๋ค๋ง ํ์ด์ ๊ทธ๋ฐ์ง ๋ชฐ๋ผ๋ ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ์ ๊ทผํ๋ ์๊ฐ์ด ์ค์ด๋ ๋๋์ด๋ค.
๋๋์ด ์ฝํ
๊ณต๋ถ๋ฅผ ์์ํ๋ ์ด์ ์ธ naver AI boostcamp 5๊ธฐ ์ผ์ ์ด ๋์๋ค!
1์ฐจ ์ฝํ
๋ 1์ 13์ผ ์ํ ์์ ..
12์ ํ๋ฌ ๋์ ์ ์ ์ข ์ค์ฌ๊ฐ๋ฉด์๋ผ๋ ํด์ผ๊ฒ ๋ค..
12์ 6์ผ ~ 12์ 19์ผ์ ๊ธฐ๋ง๊ณ ์ฌ์ ์ฝํ
, ์ค๊ฐ ์ค๊ฐ SQL Study, Texas ๊ฐ์... ํ....
๋ณํํ ๊ฒ๋ค์ด ํ ๋์ด ์๋์ง๋ง ์ต๋ํ ์ฝํ
๋ฌธ์ ํ์ด๋ฅผ ์ํํ ํ์ง ์์ผ๋ ค๊ณ ํ๋ค.
ํ์ดํ
ํด๋ณด์!!