본문 바로가기

개발일지/TIL

TIL 23-05-04 팀원과의 코드 리뷰 - ad 제거하기

1. 팀원과의 코드 리뷰 - ad 제거하기

 문제점

https://school.programmers.co.kr/learn/courses/30/lessons/181870

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 시도해 본 것들

for 문 사용하기 

def solution(strArr):
    answer = []
    for s in strArr:
        if 'ad' not in s:
            answer.append(s)    
    return answer

문제가 제시한 그대로 for문으로 시도

 

list comprehension 사용하기

def solution(strArr):
    return [s for s in strArr if 'ad' not in s]

for문이 보이면 매일같이 시도하는 list comprehension이다.

 

lambda 사용하기 

def solution(strArr):
    # filter로 ad가 없는 s만 가져오기
    return list(filter(lambda s: 'ad' not in s, strArr))

이번에 사용해 볼 때는 filter까지 사용해야 했지만, 생각보다 어렵지 않았다.

list comprehension으로 축약하는 연습을 해서 그런지 lambda를 처음 배울 때 보다 쉽게 가능했다.

 

팀원과의 코드 리뷰

팀원의 find 사용 코드 

def solution(strArr):
    answer = []
    for i in strArr:      
        if i.find('ad') == -1:
            answer.append(i)
    return answer

get()을 했을 때 값이 없으면 None이 나오는 것처럼 find도 에러가 아닌 -1을 출력해서 이런 방법이 가능했다.

값이 존재하지 않으면 에러를 일으키는 index와 상황을 생각하면서 골라서 사용하면 될 것 같다. 

 

list comprehension, lambda 비교하기 

return [s for s in strArr if 'ad' not in s]
return list(filter(lambda s: 'ad' not in s, strArr))

# for문 범위 설정
list comprehension = for s in strArr
lambda = lambda s: s, strArr
basic = for s in strArr:

# if문 조건 설정
list comprehension = if 'ad' not in s
lambda = filer('ad' not in s)
basic = if 'ad' not in s:

# 리스트에 추가
list comprehension = []
lambda = list()
basic = answer.append(s)

list comprehension을 처음 사용할 때도 그랬지만 비교할 코드가 있으면 형태가 흡사해서 이해하기 한결 쉽다. 

 

 해결 방법

def solution(strArr):
    return list(filter(lambda s: 'ad' not in s, strArr))

 알게 된 점

lambda를 따라 하는 예시가 아닌 스스로 처음 써 봤다. 최근에 list comprehension으로 만들고 ''.join으로 풀었던 적이 많은데 lambda를 사용하면 그런 상황을 줄일 수 있을 것 같다.

filter도 처음 봤을 때 유용하겠다 싶은 생각을 했는데 코드 구현과정에서 생각의 흐름을 따라가면 보통 if문으로 처리하기 때문에 filter를 써야겠다는 생각을 잘 못하는데 이번 기회에 사용할 수 있었다.