week 1-4
1-1๋ถํฐ ํ์ฌ ๊ธ(1-4)๊น์ง ๋งค๋ฒ ์์ฑํ ๊ธ์
4์ฃผ์ฐจ, ์ฆ week 4๊น์ง ์์ฑ ๋ ์์ ์ ๋๋ค.
ํ๋ก๊ทธ๋๋จธ์ค School ์์ ์งํํ๋ ์ฝํ ์ค๋น ๊ฐ์๋ก
๋ณธ ๊ณผ์ ์ ๋์ฑ ๊น์ด ์ดํดํ๊ธฐ ์ํด์ ์ค์ค๋ก ์์ฑํ๋ ์๋ฆฌ์ฆ์ ๋๋ค
week1-2 ์์ ํ์ตํ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋ค์ ๋ฑ์ฅํ์ต๋๋ค!
ํ์ง๋ง ์ ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชป ํ์ต๋๋คใ
๋น์์๋ ์๋ฒฝํ ์ดํดํ๋ค๊ณ ์๊ฐํ์ง๋ง..
์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ์๋ ๊ฒ๊ณผ ์ ์ฉํ์ฌ ํด๊ฒฐ ํ ์ ์๋ ๊ฒ์
๋ณ๊ฐ์ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค..!
๋ค์ง๊ณ ์ง ๋ฌธ์ ๋ถํฐ ๋ค์ด๊ฐ๋๋ค.
# [๋ฌธ์ ์ค๋ช
]
# ์ด๋ค ์ซ์์์ k๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
#
# ์๋ฅผ ๋ค์ด, ์ซ์ 1924์์ ์ ๋ ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ 94 ์
๋๋ค.
#
# ๋ฌธ์์ด ํ์์ผ๋ก ์ซ์ number์ ์ ๊ฑฐํ ์์ ๊ฐ์ k๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
# number์์ k ๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ๋ง๋ค ์ ์๋ ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
#
# [์ ํ ์กฐ๊ฑด]
# number๋ 2์๋ฆฌ ์ด์, 1,000,000์๋ฆฌ ์ดํ์ธ ์ซ์์
๋๋ค.
# k๋ 1 ์ด์ number์ ์๋ฆฟ์ ๋ฏธ๋ง์ธ ์์ฐ์์
๋๋ค.
์ค์ค๋ก ๋จ๊ณ์ ์ผ๋ก ์๊ฐํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ๋๋ฐ ์ด๋ ค์์ด ์์ด์
๊ฐ์๋ฅผ ๋ณด๊ณ ์ ๋ค์ ์์ฑํ๋๋ฐ, ๊ทธ ๊ณผ์ ์ ๋ค์ ๊ฐ์ด ์ดํด๋ด ์๋ค!
1. ๋ฌธ์ ์ดํดํ๊ธฐ
์ต์ข ์ ์ผ๋ก ์ฃผ์ด์ง ์์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ์ถํ๊ณ ์ถ์ต๋๋ค!
ํ์ฌ์ ์ ํ์ด ์ต์ข ์ ํ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค..!
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์์๊น์?
๋ค ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค!
์๋จ๊ณ ์์์ ์ ํ(์์๋ฆฌ์ ํฐ ์)์ด ์ดํ ๋จ๊ณ์์์
๋์์ ๋ํ ํด(solution)์ ์ต์ ์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์์
collection์ด๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
ํด๋น ๋ฆฌ์คํธ์๋ ๋งค ๋ฒ์ ์๊ฐ๋ง๋ค ์ต์ ์ ์ ํ์ ํ ๊ฒฝ์ฐ๊ฐ ์ ์ฅ ๋ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๋ก ์ ์๋ number๋ฅผ ์์ฐจ์ ์ผ๋ก ๋๋ฉด์ (์๋ฆฟ์๊ฐ ๋์ ๊ฒ์๋ถํฐ) ๋น๊ตํฉ๋๋ค.
๋ค์ ์๋ฆฟ์๊ฐ ์ ์ฅ๋ collection๋ณด๋ค ๋ ํฌ๋ค๋ฉด, ์์ง ์์ ๋๊น์ง collection์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
def solution(number, k):
collection = []
for i, n in enumerate(number):
while len(collection) > 0 and collection[-1] < k:
collection.remove(collection[-1]) #์ดํ ์์ ์์
k -= 1
collection.append(n)
answer = ''.join(collection)
2. ๊ณ ๋ ค ์ฌํญ
์์ ๊ฐ์ ์ฝ๋๋ก ํด๊ฒฐ ๊ฐ๋ฅํ ๊น์?
๊ณ ๋ ค์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ์๋ฆฟ์๋ฅผ ๋ชจ๋ ์ ๊ฑฐํด์ผํ ์(k)๊ฐ 0์ด ๋์ ๋
๋์ด์ ์ ๊ฑฐํ ์ ์๋ ๊ฐ์(k)๊ฐ ์๋ค๋ฉด while๋ฌธ์ ์ข ๋ฃํจ์ผ๋ก ๋์ด์ ๊ฐ์ ์ ๊ฑฐํ๋ฉด ์ ๋ฉ๋๋ค.
def solution(number, k):
collection = []
for i, n in enumerate(number):
while len(collection) > 0 and collection[-1] < k and k > 0: #์กฐ๊ฑด์ผ๋ก'k>0' ์ถ๊ฐ๋จ
collection.remove(collection[-1]) #์ดํ ์์ ์์
k -= 1
collection.append(n)
answer = ''.join(collection)
2) ์ ๊ฑฐํด์ผํ ์๊ฐ ๋จ์์ฑ๋ก ๋ชจ๋ ์๋ฆฟ์๋ฅผ ๋ค ๋์์ ๋
def solution(number, k):
collection = []
for i, n in enumerate(number):
while len(collection) > 0 and collection[-1] < k and k > 0:
collection.remove(collection[-1]) #์ดํ ์์ ์์
k -= 1
if k == 0: #์ถ๊ฐ๋ ์ฝ๋
collection += number[i:] #ํ์ฌ ์๋ฆฌ์๋ถํฐ ๋๊น์ง ๋ถ์ด๊ธฐ
break
collection.append(n)
answer = ''.join(collection)
3) ๋ฆฌ์คํธ ๋์ ๊ฐ์ ๋ฃ๊ณ ๋นผ๊ธฐ
๋ฆฌ์คํธ ๋์ ๊ฐ์ ๋ฃ์ ๋๋ append๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ง์ง๋ง
๊ฐ์ ์ ๊ฑฐํ ๋๋ ์ด๋จ๊น์?
collection.remove(collection[-1]) ํด๋น ์ฝ๋๊ฐ ํจ์จ์ ์ผ๊น์?
๊ทธ๋ ์ง ์์ต๋๋ค.
collection[-1]์ ๊ฐ์ ์ฐพ๊ณ ๊ทธ ๊ฐ์ ๋ค์ ๋ฆฌ์คํธ์์ ์ฐพ์์
์ ๊ฑฐํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฏ๋ก ํจ์จ์ ์ด์ง ์์ต๋๋ค.
๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด
list.pop()์ ํตํด์ ๋์ฑ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
def solution(number, k):
collection = []
for i, n in enumerate(number):
while len(collection) > 0 and collection[-1] < k and k > 0:
collection.pop() #์์ ๋ ์ฝ๋
k -= 1
if k == 0: #์ถ๊ฐ๋ ์ฝ๋
collection += number[i:]
break
collection.append(n)
answer = ''.join(collection)
[์ต์ข ์ฝ๋]
def solution(number, k):
collection = []
for i, n in enumerate(number):
whlie len(collection) > 0 and collection[-1] < n and k > 0:
collection.pop() #list์ ๋ง์ง๋ง ๊ฐ
k -= 1
if k == 0: #๋์ด์ ์ ๊ฑฐํ ์ ์๋ ๊ฐ์๊ฐ ์์ ๋
collection += number[i:] #number์ i๋ฒ์งธ๋ถํฐ ๋๊น์ง ๋ถ์ด๊ธฐ
break #๋ฐ๋ณต๋ฌธ์์ ํจ์จ์ฑ์ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ์ ์ค ํ๋
collection.append(n)
answer = collection[:-k] if k > 0 else collection #์ ๊ฑฐํด์ผํ ๊ฐ์(k)๊ฐ ๋จ์์ ๋ ๋งจ ๋ค k๊ฐ๋ฅผ ์ ๊ฑฐ
return ''.join(answer)