[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ์ง๊ฟ (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/131128
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋์ด๋ : ํ
1. ์ฒ์ X๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ ธ์ผ๋ ์๊ฐ์ด๊ณผ .. ๋ฌธ์์ด ๊ธธ์ด๊ฐ ์ต๋ 3,000,000์ด์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ด๊ณผ๊ฐ ๋๊ฑฐ๋ผ ์์ํจ.
2. 1 ~ 9 ๊น์ง ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ฆผ. ๊ทผ๋ ์ด๊ฒ๋ ์๊ฐ์ด๊ณผ..
Counter ๋ฉ์๋์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ผ๋ก ์๊ณ ์๋๋ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์๊ฐ์ ๋ ์ค์ผ ์ ์์๊น
from collections import Counter
def solution(X, Y):
answer = ''
a = Counter(X)
b = Counter(Y)
for i in range(9,-1,-1) :
m = min(a[str(i)],b[str(i)])
answer += (str(i)*m)
# print(answer)
if not answer : return "-1"
if int(answer) == 0 : return "0"
return answer
3. ํํธ๋ฅผ ๋ดค๋๋ฐ ํ๋ณํ์ด ์๊ฐ๋ณด๋ค ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๊ณ ํด์ "000..." ์ผ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋ก ๋นผ์คฌ๋ค. ํต๊ณผ ๐ ๐
from collections import Counter
def solution(X, Y):
answer = ''
a = Counter(X)
b = Counter(Y)
for i in range(9,-1,-1) :
m = min(a[str(i)],b[str(i)])
if i == 0 and not answer and m > 0:
return "0"
answer += (str(i)*m)
if not answer : return "-1"
return answer