https://school.programmers.co.kr/learn/courses/30/lessons/131128
1. 내가 작성한 코드
from collections import Counter
def solution(x, y):
answer = ''
x_dic = Counter(x)
y_dic = Counter(y)
d_dic = x_dic - y_dic #x와 y의 차이
result_dic = x_dic - d_dic #x에서 차이를 빼면 공통인 것이 나옴
if len(result_dic) == 0: #공통인 것이 없을경우 return -1
return "-1"
if list(result_dic.keys()) == ['0']: #0만 있을 경우 return 0
return "0"
for i in sorted(result_dic,reverse=True): #그게 아닐 경우
answer += str(i) * result_dic[i]
return answer
count를 이용하면 시간복잡도가 박살나기 때문에 Counter 모듈을 이용했다.
2. 간략한 코드 설명
1. x - (x - y) 을 할 경우 x와 y의 공통 집합이 나온다.
2. 공통된 문자가 없을 경우 -1을 return 해야하기 때문에 len 함수를 이용해 길이를 확인한다.
3. result_dic.key()를 이용하면 모든 key값이 나오는데, 이 때 0밖에 없으면 return 0한다.
4. result_dic을 내림차순 정렬해주고, 각 key를 횟수만큼 곱해서 문자열에 넣어준다.
(개수를 출력하기 위해서는 int를 str으로 변환해서 곱해준다.)
(Counter은 산술연산 가능)
'🔅코딩테스트 공부🔅 > ❗프로그래머스(Lv.1)' 카테고리의 다른 글
[프로그래머스] Level1 푸드 파이트 대회(python) (0) | 2023.02.15 |
---|---|
[프로그래머스] Level1 햄버거 만들기(python) (0) | 2023.02.15 |
[프로그래머스] Level1 크레인 인형뽑기 게임(python) (0) | 2023.02.14 |
[프로그래머스] Level1 로또의 최고 순위와 최저 순위(python) (0) | 2023.02.13 |
[프로그래머스] Level1 숫자 문자열과 영단어(python) (0) | 2023.02.13 |
댓글