Dia Egg - Shugo Chara

Python공부/프로그래머스

(Python) 숫자 짝꿍 (프로그래머스 Lv.1)

별ㅇI 2023. 6. 15. 19:16
728x90
반응형

숫자 짝꿍 (프로그래머스 Lv.1)

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

 

프로그래머스

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

programmers.co.kr

 

내 코드

def solution(X, Y):
    answer = ''
    X_num, Y_num = {},{}

    for i in range(10):
        X_num[i],Y_num[i] = 0, 0

    for x in X:
        X_num[int(x)] += 1
        
    for y in Y:
        Y_num[int(y)] += 1
    
    for i in range(9,-1,-1):
        answer += str(i)*min(X_num[i],Y_num[i])

    if answer == "":
        return "-1"
    
    if answer[0] == "0":
        return "0"
    
    return answer

 

시간 효율성 문제로 많이 헤맨 문제였다. 

일단 sort()를 쓰려고 했는데, 이게 list로도 바꿨다가 하는 과정이 좀 있어서 시간 복잡도에 좀 걸리는 모양이었다. 

 

for i in range(9,-1,-1):
        answer += str(i)*min(X_num[i],Y_num[i])

그래서 대신 이 알고리즘을 썼다. 

감소하는 for문을 잘 안쓰다보니 처음 부터 떠올리지 못했는데 앞으로는 더 빨리 떠올리도록 해야지

 

if answer == "":
    return "-1"
    
if answer[0] == "0":
    return "0"

이 순서를 바꿔도 마지막 두개가 통과 불가할 수 있으니 조심하도록 하자. 

728x90
반응형