숫자 짝꿍 - Python

2024. 1. 25. 23:35공부/📝 프로그래머스

1. 풀이 코드

def solution(X, Y):
    X_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    Y_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    for i in range(0, 10):
        X_list[i] = X.count(str(i))
        Y_list[i] = Y.count(str(i))
        
    answer = ''
    for i in range(9, -1, -1):
        if i != 0 or len(answer) != 0:
            while X_list[i] != 0 and Y_list[i] != 0:
                answer += f"{i}"
                X_list[i] -= 1
                Y_list[i] -= 1
        elif i == 0 and (X_list[i] != 0 and Y_list[i] != 0):
            answer = '0'
        else:
            answer = '-1'
    return answer

  return을 str(int(answer)) if answer != '' else "-1" 로 했더니 시간초과가 떠서 위와 같이 처리했습니다.

 

2. 다른 사람 풀이 코드

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 len(answer) == answer.count('0'):
        return '0'
    else :
        return answer

  엄청 깔끔하네요. 멋진 발상입니다.

  그런데 댓글에 이런 내용이 있네요.


from collections import Counter

def solution(X, Y):
    X_counter = Counter(X)
    Y_counter = Counter(Y)

    answer = ''
    for i in range(9, -1, -1):
        count_i = min(X_counter[str(i)], Y_counter[str(i)])
        answer += str(i) * count_i

    if answer == '':
        return '-1'
    elif len(answer) == answer.count('0'):
        return '0'
    else:
        return answer

  댓글의 내용을 반영하면 위와 같이 작성할 수 있겠습니다.


 

프로그래머스

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

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

대충 만든 자판 - Python  (0) 2024.01.28
문자열 나누기 - Python  (0) 2024.01.27
로또의 최고 순위와 최저 순위 - Python  (0) 2024.01.24
[1차] 다트 게임 - Python  (0) 2023.12.13
실패율 - Python  (0) 2023.12.13