[파이썬/python] 프로그래머스 : 숫자 짝꿍 (Lv.1)

https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(X, Y):
    answer = ''
    for i in range(9,-1,-1):
        answer += str(i) * min(X.count(str(i)),Y.count(str(i)))
    if answer == '' :
        return '-1'
    elif answer[0] == '0':
        return '0'
    return answer

9부터 0까지 내림차순으로 정렬하기 위해(내림차순으로 정렬하면 그게 곧 제일 큰 값) range(9,-1,-1)을 해줌

str(i) * min(X.count(str(i)),Y.count(str(i))) 을 해주면

공통으로 들어가는 정수의 수가 구해진다.

(만약 str(i)가 9이고, x와y에 9라는 숫자가 없다면 X.count(str(9)) = 0, Y.count(str(9)) = 0, 따라서 str(9) * 0이 될 것이다. 만약 x = '11999', y='22299'이면 둘이 겹치는 숫자는 9이고, x에는 9가 세 번 들어갔지만 y에는 두 번 들어갔기 때문에 두 개의 9가 공통된다( X.count(str(9)) = 3, Y.count(str(9)) = 2). 따라서 str(9) * 2 => 99)

 

def solution(X, Y):
    answer = ''
    for i in range(9,-1,-1):
        if X.count(str(i)) and Y.count(str(i)):
            answer += str(i) * min(X.count(str(i)),Y.count(str(i)))
    if answer == '' :
        return '-1'
    elif answer[0] == '0':
        return '0'
    return answer

맨 처음에 풀었던 건데 굳이 if를 왜 넣었지??? 의문이다.. if를 제거하여 위의 코드처럼 바꿔주었다.

comment