https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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'
return answer
9부터 0까지 내림차순으로 정렬하기 위해(내림차순으로 정렬하면 그게 곧 제일 큰 값) range(9,-1,-1)을 해줌
str(i) * min(X.count(str(i)),Y.count(str(i))) 을 해주면
공통으로 들어가는 정수의 수가 구해진다.
(만약 str(i)가 9이고, x와y에 9라는 숫자가 없다면 X.count(str(9)) = 0, Y.count(str(9)) = 0, 따라서 str(9) * 0이 될 것이다. 만약 x = '11999', y='22299'이면 둘이 겹치는 숫자는 9이고, x에는 9가 세 번 들어갔지만 y에는 두 번 들어갔기 때문에 두 개의 9가 공통된다( X.count(str(9)) = 3, Y.count(str(9)) = 2). 따라서 str(9) * 2 => 99)
def solution(X, Y):
answer = ''
for i in range(9,-1,-1):
if X.count(str(i)) and Y.count(str(i)):
answer += str(i) * min(X.count(str(i)),Y.count(str(i)))
if answer == '' :
return '-1'
elif answer[0] == '0':
return '0'
return answer
맨 처음에 풀었던 건데 굳이 if를 왜 넣었지??? 의문이다.. if를 제거하여 위의 코드처럼 바꿔주었다.
| [파이썬/python] 프로그래머스 : JadenCase 만들기 (Lv.2) (1) | 2023.01.19 |
|---|---|
| [파이썬/python] 프로그래머스 : 최댓값과 최솟값 (Lv.2) (0) | 2023.01.18 |
| [파이썬] 프로그래머스 : 로또의 최고 순위와 최저 순위 (Lv.1) (0) | 2023.01.17 |
| [파이썬/python] 프로그래머스 : 문자열 나누기(Lv.1) (0) | 2023.01.16 |
| [파이썬/python] 프로그래머스 : 성격 유형 검사하기(Lv.1) (0) | 2023.01.16 |