저고데

[프로그래머스]숫자 짝꿍 본문

프로그래머스

[프로그래머스]숫자 짝꿍

진철 2023. 2. 7. 21:48
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

프로그래머스

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

programmers.co.kr

코드를 작성하기 위한 순서는 다음과 같다.

1. 숫자의 자릿수가 3백만 이하이므로 이중 for문은 절대 사용하지 않는다.

2. 런타임 에러를 막기 위해서 딕셔너리를 사용해 각 숫자가 얼만큼 있는지 구한다.

3. 가장 큰 수를 만들어야하기 때문에 9에서부터 0까지 내려오면서 딕셔너리 값을 확인한다. 이 때, 두 딕셔너리의 교집합에 해당하는 숫자만 사용할 수 있으므로 가장 작은 수만큼 반복해서 넣어준다.

4. 딕셔너리 값을 확인하면서 answer에 대입하는 중에 만약 0의 갯수를 확인하는 데 아직도 answer가 null인 경우를 찾아야한다. 000이 답이 될 수가 없기 때문에 반복하는 갯수를 1로 고정시켜준다.

5. 모든 과정을 반복했는데도 answer가 null이면 합집합이 없는 경우이기 때문에 -1를 반환한다.

def solution(X, Y):
    answer = ''
    one = {str(n):0 for n in range(10)} #2번
    two = {str(n):0 for n in range(10)}
    for i in X:
        one[i]+=1
    for i in Y:
        two[i]+=1
    for i in range(9, -1, -1): #3번
        i=str(i)
        su=min(one[i], two[i]) #3번 : 가장 작은 수가 합집합 갯수이다.
        if answer=='' and i=='0' and. su!=0: #4번
            su=1
        answer+=i*su
    if answer=='': #5번
        answer+=str(-1)
    return answer
728x90
반응형