https://school.programmers.co.kr/learn/courses/30/lessons/131128
(실패)
입력받은 숫자를 리스트로 만들어서 역순으로 정렬해주고
반복문을 돌려 2개의 리스트(임의로 a, b)를 비교해서 숫자가 같으면 인덱스 둘다 넘어가고
a<b이면 b만 넘어가고, 반대의 경우에는 a만 넘어가게 하여 둘 중 하나의 인덱스가 끝나면 종료시켰다.
하지만 입력받은 숫자의 범위가 굉장히 크기 때문에 시간 초과가 떴다..😅
# 프로그래머스 131128: 숫자 짝꿍
def solution(X, Y):
X = sorted(list(map(int, X)), reverse=1)
Y = sorted(list(map(int, Y)), reverse=1)
i = 0
j = 0
result = ""
while (i < len(X) and j < len(Y)):
if X[i] == Y[j]:
result += str(X[i])
i += 1
j += 1
elif X[i] < Y[j]:
j += 1
else:
i += 1
if result == "":
return '-1'
else:
return str(int(result))
(성공)
숫자 0~9를 기준으로 반복문을 돌려줬다. (큰 숫자를 구해야 하니 9 -> 0)
그리고 문자열 앞의 0~을 걸러야 한다고 생각해서 result를 string -> int -> string 변환 과정을 거쳤었는데,
생각해보니 어차피 숫자가 높은 순으로 정렬했기 때문에 답이 0이 아닌 이상 문자열 앞에 0이 올 경우는 없다..!
따라서 result의 맨 앞 글자가 0이면 그 문자열은 무조건 0이기 때문에 0으로 반환해줬다...!
# 프로그래머스 131128: 숫자 짝꿍
def solution(X, Y):
result = ''
for i in range(9, -1, -1):
num = str(i)
result += num * min(X.count(num), Y.count(num))
if result == "":
return '-1'
elif result[0] == "0":
return '0'
else:
return result
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | Lv1] 크레인 인형뽑기 게임 (Python) - 2019 카카오 개발자 겨울 인턴십 (0) | 2023.01.26 |
---|---|
[프로그래머스 | Lv1] 키패드 누르기 (Python) - 2020 카카오 인턴십 (0) | 2023.01.14 |
[프로그래머스 | Lv1] 개인정보 수집 유효기간 (Python) - 2023 KAKAO BLIND RECRUITMENT (0) | 2023.01.07 |
[프로그래머스 | Lv1] 햄버거 만들기 (Python) (0) | 2023.01.07 |
[프로그래머스 | Lv1] 신규 아이디 추천 (Python) - 2021 KAKAO BLIND RECRUITMENT (0) | 2023.01.04 |