[프로그래머스] Python 숫자짝꿍 Level1 - 연습문제

swb·2022년 11월 11일

프로그래머스

목록 보기
5/23

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131128

접근

  • 사실 푸는 건 크게 어렵지 않았지만 시간 초과는 도저히 모르겠어서 다른 블로그를 참고했다.
  1. 최대값 때문에 정렬이 필요하다. 하지만 정렬 라이브러리는 시간초과에 취약하다. how? -> 역순출력
  2. X,Y에서 겹치는 숫자 중 동일한 숫자는 더 적게 포함되어 있는 곳에서 가져오면 된다. ex) "5525", "1255"는 2, 5, 5가 겹친다. 5는 "5525" 3번, "1255" 2번 이기 때문에 "1255"에서 5의 개수를 가져오면 된다.

슈도코드

9부터0까지 역순 for문
  X.i개수, Y.i개수 작은 값 만큼 i 배열에 저장

배열 길이가 0이면 -1
1번째 원소가 0이면 0 (ex - "000"이 나올 수 있기 때문에)
아니면 배열 출력

풀이

def solution(X, Y):
    answer = ''
    for i in range(9, -1, -1):
        answer += str(i) * min(X.count(str(i)), Y.count(str(i)))
    
    if answer == '':
        return "-1"
    elif answer[0] == '0':
        return "0"
    else:
        return answer
profile
개발 시작

0개의 댓글