๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆซ์ž ์ง๊ฟ (Python)

by young-ji 2022. 10. 19.

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

๋Œ“๊ธ€