def solution(s):
answer = 0 # 결과값
word = s # 잘라낼 s값 저장
a = 1 # 시작하는 문자 횟수
b = 0 # 시작하는 문자와 다른 문자 횟수
i = 1 # 인덱스 번호
while True:
if len(word) == 0:
break
if len(word) == i:
answer += 1
break
if word[0] == word[i]:
a += 1
i += 1
else:
b += 1
i += 1
if a == b:
answer += 1
word = word[i:]
i = 1
a = 1
b = 0
return answer
def solution(n, lost, reserve):
# 정렬
lost.sort()
reserve.sort()
# lost, reserve에 공통으로 있는 요소 제거
for i in reserve[:]:
if i in lost:
reserve.remove(i)
lost.remove(i)
# 체육복 빌려주기(나의 앞 번호부터 확인)
for i in reserve:
if i-1 in lost:
lost.remove(i-1)
elif i+1 in lost:
lost.remove(i+1)
return n-len(lost)
반복문을 돌리면서 remove로 인수를 제거하려면 얕은복사를 활용하면 된다!!
for i in reserve[:]: if i in lost: reserve.remove(i) lost.remove(i)
def solution(X, Y):
answer = ''
lst = []
lst_Y = list(Y)
for i in X:
if i in lst_Y:
lst.append(int(i))
lst_Y.remove(i)
if len(lst) == 0:
return "-1"
elif sum(lst) == 0:
return "0"
else:
lst.sort(reverse=True)
for i in lst:
answer += str(i)
return answer
처음에는 이런 방식으로 풀었었는데 몇가지 테스트 케이스에서 시간 초과가 발생했다..!!
그래서 알아보니 Counter 함수를 활용해보면 좋을 것 같아서 Counter를 활용해보았다!
from collections import Counter
def solution(X, Y):
nums = Counter(X) & Counter(Y)
if not nums:
return '-1'
elif list(nums) == ['0']:
return '0'
nums_order = sorted(list(nums), reverse=True)
answer = ''
for num in nums_order:
answer += num * nums[num]
return answer
from collections import Counter
def solution(lottos, win_nums):
lottos_dict = {'0':6, '1':6, '2':5, '3':4, '4':3, '5':2, '6':1}
answer = []
nums = Counter(lottos) & Counter(win_nums)
zero = lottos.count(0)
return lottos_dict[str(len(nums)+zero)], lottos_dict[str(len(nums))]