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
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 17681. 비밀지도 (Lv.1) (1) | 2022.10.10 |
---|---|
[Python] 프로그래머스 17682. 다트 게임 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 12921. 소수 찾기 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 12915. 문자열 내 마음대로 정렬하기 (Lv.1) (1) | 2022.10.10 |
[Python] 프로그래머스 12926. 시저 암호 (Lv.1) (0) | 2022.10.10 |