🔍 알고리즘/프로그래머스 Python
[Python] 프로그래머스 131128. 숫자 짝꿍 (Lv.1)
탄치
2022. 10. 10. 03:18
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
counting sort의 개념이 살짝 녹아있는 문제입니다.
수 X와 Y에 대해 각 자릿수에 0~9 사이의 숫자가 몇개가 나오는지를 체크합니다.
어떤 숫자 i에 대해 X와 Y 중에 나온 수가 적은 값을 취합니다. (더 많은쪽은 짝을 이루지 못하고 남습니다.)
숫자 i를 짝이 이루어진 수 만큼 배열에 넣고 내림차순으로 정렬하면 정답이 됩니다.
단, 배열의 길이가 0이라면 "-1"을, 배열의 길이가 0의 갯수와 같다면 (즉 0 말고 다른 수가 배열 안에 없다면) "0"을 return하는 예외처리가 필요합니다.
def solution(X, Y):
numx = [0 for i in range(10)]
numy = [0 for i in range(10)]
answer = []
for n in X:
numx[int(n)] += 1
for n in Y:
numy[int(n)] += 1
pred = min(numx[0], numy[0])
for i in range(10):
n = min(numx[i], numy[i])
for j in range(n):
answer.append(str(i))
answer.sort(reverse=True)
if len(answer) == 0:
return "-1"
return ''.join(answer) if len(answer) > pred else "0"
728x90