728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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] 파이썬 count, len 함수 설명과 에제
안녕하세요. BlockDMask 입니다. 오늘은 파이썬 빌트인 함수들중 문자열에서 쓸 수 있는 함수 2가지를 가지고 왔습니다. 미리 요약을 해보자면 문자열의 길이를 구하는 len 함수, 문자열 내부에서 특
blockdmask.tistory.com
'코딩테스트 문제' 카테고리의 다른 글
[프로그래머스/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 |