728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131128
X, Y 의 공통된 수가 없으면 -1 리턴, 공통된 수가 있다면 최대값을 만들어서 리턴
1. min() 사용
0~9 갯수를 저장할 리스트를 만든다
for문을 돌면서 각 리스트에 갯수 저장
최대값을 만들기 위해 9부터 0까지 아래로 내려간다
둘 다 리스트 안이 0이 아닐 때 두 리스트 중 최솟값을 찾는다 : min()
최솟값만큼 숫자 반복
문자열 반복 : *
예) 'a' * 3 -> 'aaa'
def solution(X, Y):
list_x = [0]*10
list_y = [0]*10
answer = ''
for i in range(len(X)):
list_x[int(X[i])] += 1
for i in range(len(Y)):
list_y[int(Y[i])] += 1
for i in range(9, -1, -1):
if list_x[i] != 0 and list_y[i] !=0:
answer += str(i) * min(list_x[i], list_y[i])
if len(answer) == 0:
return '-1'
if answer[0] == '0':
return '0'
return answer
아무래도 for문을 3번 돌려서 시간이 걸린다.
2. min(), count() 사용
최대값을 만들기 위해 9부터 0까지 아래로 내려간다
숫자가 몇 개 들어있는지 확인 : count()
둘 다 0이 아닐 때 둘 중 최솟값만큼 숫자 반복
def solution(X, Y):
answer = ''
for i in range(9, -1, -1):
x_count = X.count(str(i))
y_count = Y.count(str(i))
if x_count != 0 and y_count !=0:
answer += str(i) * min(x_count, y_count)
if len(answer) == 0:
return '-1'
if answer[0] == '0':
return '0'
return answer
리스트명.count(찾을 문자열)
https://blockdmask.tistory.com/410
'코딩테스트 문제' 카테고리의 다른 글
[프로그래머스/Python] 햄버거 만들기 (0) | 2024.01.20 |
---|---|
[프로그래머스/Python] 카드 뭉치 (1) | 2024.01.11 |
[프로그래머스/Python] 시저 암호 (0) | 2024.01.11 |
[프로그래머스/Python] 신고 결과 받기 (0) | 2024.01.11 |
[프로그래머스/Python] 둘만의 암호 (0) | 2024.01.10 |