[프로그래머스] 코딩테스트 Lv1 숫자 짝꿍 [Python]

원준·2023년 5월 1일
0

코딩 테스트

목록 보기
11/18

1. 문제 설명

2. 내가 한 코드

def solution(X, Y):
    answer = ''
    
    XY_Set = set(X) & set(Y) # 서로 중복되는 문자를 찾기 위해 Set사용
    for x in list(XY_Set):
        answer += x * min(X.count(x), Y.count(x)) 
        	# 겹치는 문자만 사용해야하니 중복되는 문자 중 작은 갯수를 들고옴
    
    answer = ''.join(reversed(sorted(answer)))
    	# 가장 큰수로 만들려면 높은 수를 앞으로 보내는 것이 좋아서 정렬
    if answer == '':
    	# 해당 값이 없다면 -1 리턴
        return '-1'
    elif answer.replace('0', '') == '':
    	# 0만 있는 숫자라면 '0'을 리턴한다.
        return '0'

    return answer
  • 개인적으로 난이도가 조금 있다고 생각한다.
  • 처음에는 타입변환으로 int()로 변환 후 str()로 변환하거나, 두개의 문자열을 동시에 비교를 했었지만 틀리거나 시간 초과로 틀리는 경우가 많았다.
  • 그래서 생각해낸게 교집한으로 사용할수 있도록 설정하고 count로 작은 수를 찾아서 반환하는 것이였다.
  • 다만 int() 후 str() 로 형변환 하는것에 매우 큰 자원을 먹다보니 0이 여러개 일 경우를 생각하다보니 0을 아예없엤을때 값이 없다면 0으로 리턴하도록 설정했다.
profile
공부해보자

0개의 댓글