728x90
반응형
숫자 짝꿍 (프로그래머스 Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/131128
내 코드
def solution(X, Y):
answer = ''
X_num, Y_num = {},{}
for i in range(10):
X_num[i],Y_num[i] = 0, 0
for x in X:
X_num[int(x)] += 1
for y in Y:
Y_num[int(y)] += 1
for i in range(9,-1,-1):
answer += str(i)*min(X_num[i],Y_num[i])
if answer == "":
return "-1"
if answer[0] == "0":
return "0"
return answer
시간 효율성 문제로 많이 헤맨 문제였다.
일단 sort()를 쓰려고 했는데, 이게 list로도 바꿨다가 하는 과정이 좀 있어서 시간 복잡도에 좀 걸리는 모양이었다.
for i in range(9,-1,-1):
answer += str(i)*min(X_num[i],Y_num[i])
그래서 대신 이 알고리즘을 썼다.
감소하는 for문을 잘 안쓰다보니 처음 부터 떠올리지 못했는데 앞으로는 더 빨리 떠올리도록 해야지
if answer == "":
return "-1"
if answer[0] == "0":
return "0"
이 순서를 바꿔도 마지막 두개가 통과 불가할 수 있으니 조심하도록 하자.
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python) 덧칠하기 (프로그래머스 Lv.1) (0) | 2023.06.16 |
---|---|
(Python) 체육복(프로그래머스Lv.1) (0) | 2023.06.15 |
(Python) 크기가 작은 부분 문자열(프로그래머스Lv.1)/[:]의 활용 (0) | 2023.06.14 |
(Python)시저 암호(프로그래머스Lv.1) (0) | 2023.06.14 |
(Python) 삼총사(프로그래머스 Lv.1) (2) | 2023.06.14 |