6.2 미경이 스터디

코변·2022년 6월 2일
0
post-thumbnail

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을 담아 반환하라는 의미를 한 번에 담다니 간결하고 좋은 코드라는 생각이 들었다. 개인적으로 혼자하는 프로젝트에도 빈 배열 조건이 필요하다면 충분히 써봄직한 코드다

나머지 문제

부족한 금액 계산하기
두 개 뽑아서 더하기

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글