Woooang

[프로그래머스] 숫자 짝궁 [파이썬][python] 본문

[알고리즘]

[프로그래머스] 숫자 짝궁 [파이썬][python]

woooang 2024. 3. 5. 15:58

⭐문제

 

프로그래머스

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

programmers.co.kr

 

⭐코드

from collections import Counter

def solution(X, Y):
    answer = ''
    X , Y = Counter(X) ,Counter(Y)
    
    for x in X:
        for y in Y:
            if x == y:
                answer += x * min(X[x],Y[y])
    if answer == '':
        return '-1'
    elif set(answer[0]) == {'0'}:
        return '0'
    else:
        return "".join(sorted(answer,reverse=True))

 

⭐풀이

1.  두 정수 X,Y를 Counter 객체로 만든다

- 중복된 숫자들의 개수를 세기 위해서

 

2.  Counter 객체 X,Y 에서 공통으로 나타나는 정수를 찾는다

-  이중for문 사용

-  공통으로 나타나는 X, Y의 정수중 최소값을 가져온다.

-> X에서 1이 2개고 Y에서 1이 3개 -> 짝궁이 2개 생긴다 ->  최소값 가져오면 됨

- (최소값 x 공통으로나타나는 정수) 를 빈 리스트에 넣는다.

 

3. 리턴값

- 정답 리스트가 비어있으면 -1

- 0으로만 이루어져 있으면 0 

- 비어있지 않으면 가장 큰 정수로 바꾸기

 

⭐추가설명

리턴값 코드를 짤 때

answer = '00' 처럼 0이 여러번 등장하는 경우

예외처리를 할때  set을 이용하면 된다!!

 

Counter

파이썬의 내장 모듈 'collections' 안에 속한 'Counter'클래스

이 클래스는 해시 가능한 객체(딕셔너리의 키로 사용할 수 있는 객체) 의 개수를 세서 딕셔너리형태로 반환

리스트나 문자열 등의 시퀸스 데이터에서 각 원소 또는 문자가 몇 번 등장했는지 쉽게 계산 가능

from collections import Counter

my_list = [1, 2, 3, 4, 1, 2, 2, 3, 4, 5]
element_counts = Counter(my_list)

print(element_counts)
#Counter({2: 3, 1: 2, 3: 2, 4: 2, 5: 1})
728x90