본문 바로가기
[스파르타코딩클럽]데이터분석 과정/PYTHON

[Python 코드카타] 26 ~ 30번 (프로그래머스)

by doo_ 2024. 1. 9.

26번 음양더하기

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

> 다른 사람 해답

- zip 활용

def solution(absolutes, signs):
    answer=0
    for absolute,sign in zip(absolutes,signs):
        if sign:
            answer+=absolute
        else:
            answer-=absolute
    return answer

- 간결한 코드

def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))

 

27번 핸드폰번호가리기

def solution(phone_number):
    return '*'*(len(phone_number)-4) + phone_number[-4:]

> 다른 사람 해답 : 정규식을 써서 푼 답변

import re
def hide_numbers(s):
    p = re.compile(r'\d(?=\d{4})')
    return p.sub("*", s, count = 0)

28번 없는 숫자 더하기

def solution(numbers):
    answer = 0
    for i in range(10) :
        if i not in numbers:
            answer += i
    return answer

> 창의적인 답

def solution(numbers):
    return sum(range(10))-sum(numbers)

 

29번 제일 작은 수 제거하기

def solution(arr):
    arr.remove(min(arr))
    if not arr :
        arr.append(-1)
    return arr

 

30번 가운데 글자 가져오기

def solution(s):
    answer = ''
    if len(s)%2 == 0 :
        answer = s[len(s)//2-1]+s[len(s)//2]
    else :
        answer = s[len(s)//2]
    return answer

> 다른 사람 해답 : 창의적..

def solution(s):
    return s[(len(s)-1)//2 : len(s)//2 + 1]
# // 몫 -> ex. len(s) = 5일 때, s[2:3] / len(s) = 4일 때, s[1:3]