728x90
반응형
1. 문제 설명
2. 풀이과정
공통 숫자를 조합해 가장 큰 정수를 만들어야 하므로 9부터 앞자리에 와야 한다.
하여 9부터 0까지 반복하며 해당 숫자가 각 문자열에 몇 개가 포함되어 있는지 개수를 세어주고 적은 개수만큼 해당 숫자를 정답 문자열에 추가한다.하지만 이때 0만 공통 숫자인데 0이 2개 이상으로 중복되어 있다면 "0"이 나와야 하는 것을 고려해야 한다.이때 가장 큰 정수를 만들어 한 번에 숫자형으로 바꿔줄 수도 있지만 각 문자열이 최대 3,000,000 글자까지 가능하므로 모두 0인 문자열이라면 결과가 3,000,000 자리의 0으로 구성된 문자열이 될 것이다. 이를 정수로 바꾸려고 int 함수를 사용한다면 매우 많은 시간이 소요된다. 하여 "0"이 되는 경우를 먼저 따져 준다.
- 9부터 0까지 반복하며 for i in range(9, -1, -1)
- 각 문자열에서 해당 숫자의 개수를 세어 저장한다. countX = X.count(str(i))
- 이때 숫자는 정수형이므로 문자열형으로 바꾸어 세어줘야 한다. countY = Y.count(str(i))
- 만약 세어준 개수가 두 문자열 다 0개가 아닐 때 if (countX != 0 and countY != 0)
- 정답 문자열의 길이가 0이고 해당 숫자가 0이면 if (len(answer) == 0) and (i == 0)
- 정답은 "0"이다 answer = "0"
- 반면에 정답 문자열의 길이가 0이 아니고 해당 숫자도 0이 아니면 else
- 각 문자열에서 세어준 개수 중 더 작은 값을 저장한다. result = countX if (countX < countY) else countY
- 저장한 값만큼 반복하며 정답에 해당 숫자를 문자열로 추가한다. for _ in range(result): answer += str(i)
- 만약 만든 정답이 공백이면 짝꿍이 존재하지 않는 경우이므로 정답은 -1이다. if (len(answer) == 0): answer = "-1"
반응형
3. 소스코드
def solution(X, Y):
answer = ''
for i in range(9, -1, -1):
countX = X.count(str(i))
countY = Y.count(str(i))
if (countX != 0 and countY != 0):
if (len(answer) == 0) and (i == 0):
answer = "0"
else:
result = countX if (countX < countY) else countY
for _ in range(result):
answer += str(i)
if (len(answer) == 0):
answer = '-1'
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 체육복 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.15 |
---|---|
[프로그래머스] [1차] 프렌즈4블록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.13 |
[프로그래머스] [3차] 파일명 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.11 |
[프로그래머스] 등굣길 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.03 |
[프로그래머스] 옹알이 (2) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.30 |
[프로그래머스] 뒤에 있는 큰 수 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.28 |
[프로그래머스] 모음사전 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.26 |
[프로그래머스] 방문 길이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.21 |