Photo by Pietro Mattia on Unsplash
def solution(participant, completion):
check_dict ={}
for par_person in participant:
if check_dict.get(par_person, '') == '':
check_dict[par_person] =1
else: check_dict[par_person]+=1
for com_person in completion:
if check_dict.get(com_person,'') > 1:
check_dict[com_person] -=1
else: del check_dict[com_person]
return ''.join(check_dict.keys())
처음에 문제에 접근했을 때 set으로 집합을 만들어 빼면 간단하게 해결할 수 있는 문제라고 생각했는데 중복값이 생기면서 생각보다 복잡해졌다. 그래서 중복값은 각각 이름을 키값으로 하는 딕셔너리 형태를 만들어 거기에 갯수를 저장하는 형식으로 만들어 문제를 해결할 수 있었다.
def solution(arr, divisor):
answer = list(filter(lambda x: x % divisor == 0, arr))
return sorted(answer) if len(answer) > 0 else [-1]
나누어 떨어지는 숫자를 넣는 건 filter lamda를 통해서 간단하게 해결했으나 배열이 비어있다면 -1이 담긴 배열을 반환해야 하는 문제 때문에 코드가 길어졌다. 어떻게 저 코드를 줄일 수 있을까 고민하다가 그냥 정답코드로 통과 시키고 다른 사람들의 답변을 봤더니 앞으로 두고두고 쓸만한 좋은 코드를 봤다
def solution(arr, divisor):
return sorted(list(filter(lambda x: x % divisor == 0, arr))) or [-1]
or로 비어있는 배열이라면 -1을 담아 반환하라는 의미를 한 번에 담다니 간결하고 좋은 코드라는 생각이 들었다. 개인적으로 혼자하는 프로젝트에도 빈 배열 조건이 필요하다면 충분히 써봄직한 코드다
부족한 금액 계산하기
두 개 뽑아서 더하기