Coding test

[Programmers] 숫자 짝꿍

heedy 2022. 12. 12. 16:41
728x90

문제 설명


문제 풀이 과정

첫 번째 풀이: 시간 초과

from collections import Counter
def solution(X, Y):
    answer = ''
    inter = list(set(X) & set(Y))
    s = []
    x = sorted(X, reverse = True)
    y = sorted(Y, reverse = True)
    
    cnt_x = Counter(x)
    cnt_y = Counter(y)
    
    if len(inter) == 0:
        return '-1'
    else: 
        for i in sorted(inter, reverse = True):
            answer += str(i * min(cnt_x[i], cnt_y[i]))
        if int(answer) == 0:
            answer = '0'
    return answer

다른 사람의 풀이

from collections import Counter

def solution(X, Y):
    answer = '-1'
    
    list_X, list_Y = list(X), list(Y)
    set_X, set_Y = set(list_X), set(list_Y)
    cnt_X, cnt_Y = Counter(list_X), Counter(list_Y)
    
    intersection = set_X & set_Y
    
    if intersection:
        answer = ''
        sorted_number = sorted(intersection, reverse=True)
        
        for num in sorted_number:
            answer += num * min(cnt_X[num], cnt_Y[num])
        
        if sum(list(map(int, list(answer)))) == 0:
            answer = "0"
    
    return answer

 

- coding test url:

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

 

프로그래머스

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

programmers.co.kr

 

728x90