알쿼리즘: 파이썬 코드훈련 25, 26, 27번

2024. 7. 5. 19:31전처리/PYTHON

 

01 나누어 떨어지는 숫자 배열


def solution(arr, divisor):
    answer = sorted([x for x in arr if x%divisor == 0])
    if len(answer) == 0:
        return [-1]
    else:
        return answer

 

02 음양 더하기


def solution(absolutes, signs):
    return sum([absolutes[i] if signs[i] == True else -absolutes[i] for i in range(len(absolutes))])

1. 삼항 연산자를 사용할 경우 if else문이 for문보다 뒤에 올 수 없다.

2. zip함수를 사용하면 한 번에 두 변수를 받을 수 있어서 간단하다.

3. 이전 문제는 else를 쓰지 않아서 for문보다 이후에 배치했다.

return sum([a if b==True else -a for a, b in zip(absolutes, signs)])

 

03 정규표현식으로 개인정보 보호하기


def solution(phone_number):
    import re
    return re.sub(r'\d(?=\d{4})','*',phone_number)

1. 문자열 앞에 r이나 R을 붙이면, 해당 문자열이 "raw string"으로 처리된다. 정규표현식에 사용되는 백슬래시를 이스케이프 문자로 처리하지 않음을 의미한다.

2. (?=\d{4}) 코드는 긍정적 전방 탐색(positive lookahead)을 사용하여 (n자리의) 숫자 다음에 네 개의 숫자가 있는 경우만 일치시킨다.

3. re.sub()함수 코드에서 전방 탐색을 사용하여 마지막 네 자리는 변경되지 않도록 한다.