https://school.programmers.co.kr/learn/courses/30/lessons/131128
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
(์คํจ)
์ ๋ ฅ๋ฐ์ ์ซ์๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ ์ญ์์ผ๋ก ์ ๋ ฌํด์ฃผ๊ณ
๋ฐ๋ณต๋ฌธ์ ๋๋ ค 2๊ฐ์ ๋ฆฌ์คํธ(์์๋ก a, b)๋ฅผ ๋น๊ตํด์ ์ซ์๊ฐ ๊ฐ์ผ๋ฉด ์ธ๋ฑ์ค ๋๋ค ๋์ด๊ฐ๊ณ
a<b์ด๋ฉด b๋ง ๋์ด๊ฐ๊ณ , ๋ฐ๋์ ๊ฒฝ์ฐ์๋ a๋ง ๋์ด๊ฐ๊ฒ ํ์ฌ ๋ ์ค ํ๋์ ์ธ๋ฑ์ค๊ฐ ๋๋๋ฉด ์ข ๋ฃ์์ผฐ๋ค.
ํ์ง๋ง ์ ๋ ฅ๋ฐ์ ์ซ์์ ๋ฒ์๊ฐ ๊ต์ฅํ ํฌ๊ธฐ ๋๋ฌธ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ด๋ค..๐
# ํ๋ก๊ทธ๋๋จธ์ค 131128: ์ซ์ ์ง๊ฟ
def solution(X, Y):
X = sorted(list(map(int, X)), reverse=1)
Y = sorted(list(map(int, Y)), reverse=1)
i = 0
j = 0
result = ""
while (i < len(X) and j < len(Y)):
if X[i] == Y[j]:
result += str(X[i])
i += 1
j += 1
elif X[i] < Y[j]:
j += 1
else:
i += 1
if result == "":
return '-1'
else:
return str(int(result))
(์ฑ๊ณต)
์ซ์ 0~9๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์คฌ๋ค. (ํฐ ์ซ์๋ฅผ ๊ตฌํด์ผ ํ๋ 9 -> 0)
๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด ์์ 0~์ ๊ฑธ๋ฌ์ผ ํ๋ค๊ณ ์๊ฐํด์ result๋ฅผ string -> int -> string ๋ณํ ๊ณผ์ ์ ๊ฑฐ์ณค์๋๋ฐ,
์๊ฐํด๋ณด๋ ์ด์ฐจํผ ์ซ์๊ฐ ๋์ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ต์ด 0์ด ์๋ ์ด์ ๋ฌธ์์ด ์์ 0์ด ์ฌ ๊ฒฝ์ฐ๋ ์๋ค..!
๋ฐ๋ผ์ result์ ๋งจ ์ ๊ธ์๊ฐ 0์ด๋ฉด ๊ทธ ๋ฌธ์์ด์ ๋ฌด์กฐ๊ฑด 0์ด๊ธฐ ๋๋ฌธ์ 0์ผ๋ก ๋ฐํํด์คฌ๋ค...!
# ํ๋ก๊ทธ๋๋จธ์ค 131128: ์ซ์ ์ง๊ฟ
def solution(X, Y):
result = ''
for i in range(9, -1, -1):
num = str(i)
result += num * min(X.count(num), Y.count(num))
if result == "":
return '-1'
elif result[0] == "0":
return '0'
else:
return result