[Lv.1] 정답율 56%
https://school.programmers.co.kr/learn/courses/30/lessons/131128
[풀이]
- for문에서 pop으로 원소를 삭제하면 index가 실시간으로 달라지기 때문에 해당 리스트 속 모든 원소에 대해 코드를 실행하지 못할 수도 있다
- int()를 쓰면 경우에 따라 시간 초과가 될 수 있으니 주의할 것
[오답]
def solution(X, Y):
answer = []
X = list(X)
Y = list(Y)
for idx_x, x in enumerate(X) :
for idx_y, y in enumerate(Y) :
if x == y :
answer.append(x)
X.pop(idx_x)
Y.pop(idx_y)
if len(answer) == 0 :
return '-1'
else :
answer.sort(reverse=True)
answer = int(''.join(answer))
return str(answer)
[통과]
def solution(X, Y):
answer = []
X_dict = {}
for x in X :
if x in X_dict :
X_dict[x] += 1
else :
X_dict[x] = 1
Y_dict = {}
for y in Y :
if y in Y_dict :
Y_dict[y] += 1
else :
Y_dict[y] = 1
for x in list(X_dict.keys()) :
if x in list(Y_dict.keys()) :
if X_dict[x] >= Y_dict[x] :
answer.append(x*Y_dict[x])
else :
answer.append(x*X_dict[x])
if len(answer) == 0 :
return '-1'
answer.sort(reverse=True)
answer = ''.join(answer)
if answer[0] == '0' :
return '0'
else :
return str(answer)
[더 좋다고 생각하는 답]
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 len(answer) == answer.count('0'):
return '0'
else :
return answer
- dictionary 대신 count를 이용해 X와 Y에서 특정 문자열에 대해 더 적은 갯수만큼 answer에 추가
'코딩테스트' 카테고리의 다른 글
[프로그래머스] H-Index (0) | 2023.11.08 |
---|---|
[프로그래머스] 멀리 뛰기 (0) | 2023.11.03 |
[프로그래머스] 개인정보수집 유효기간 (0) | 2023.07.16 |
[프로그래머스] 둘만의 암호 (0) | 2023.07.16 |
[프로그래머스] 구명보트 (0) | 2023.07.16 |