๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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

sssbin 2023. 1. 11. 16:25

 

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