코딩 테스트/프로그래머스

Lv1. 숫자 짝꿍

  • -
728x90
반응형

문제 보기 :  숫자 짝꿍

 

프로그래머스

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

programmers.co.kr


문제

  • 정답률 : 56%


작성 코드

def solution(X, Y):
    xy = list(set(list(X))&set(list(Y)))
    x = {i:X.count(i) for i in xy}
    
    for i in xy:
        if x[i] > Y.count(i):
            x[i] = Y.count(i)
    
    num = []
    for i,j in x.items():
        n = [str(i)]*j
        num += n
    
    if num == []:
        return "-1"
    elif list(set(num)) == ["0"]:
        return "0"
    
    num.sort(reverse=True)
    answer = ''.join(num)
    return answer

풀이

X와 Y에서 겹치는 숫자를 뽑아서 그 숫자들로 만들 수 있는 가장 큰 수를 만드는게 문제다.

단순하게 intersection으로 해결하려고 했는데, 생각해보니 같은 수가 중복되어있을 때의 예외처리를 해야했다.

그래서 딕셔너리를 이용했고, 겹치는 숫자의 가장 적은 갯수를 찾았다. 그리고 reverse sort로 정렬 후 join으로 출력시키니 바로 해결되었다.

 

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv1. 햄버거 만들기  (0) 2024.09.30
Lv2. 2개 이하로 다른 비트  (0) 2024.09.28
Lv3. 숫자 게임  (0) 2024.09.26
Lv1. 로또의 최고 순위와 최저 순위  (0) 2024.09.26
Lv3. 등굣길  (0) 2024.09.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.