파이썬 코드카타 26, 27, 28, 29, 30번

2024. 2. 21. 08:01전처리/PYTHON

 

26번 음양 더하기


def solution(absolutes, signs):
    answer = []
    for num in absolutes:
        if signs[0] == True:
            answer.append(num)
            signs.pop(0)
        else:
            num = -num
            answer.append(num)
            signs.pop(0)
    return sum(answer)

 

후기: 비교해서 부호를 붙이고 리스트로 묶어서 sum함수를 이용해서 모두 더했다.

 

27번 핸드폰 번호 가리기


def solution(phone_number):
    answer = ('*' * len(phone_number[:-4])
              + phone_number[-4]
              + phone_number[-3]
              + phone_number[-2]
              + phone_number[-1]
             )
    return answer

 

후기: 이렇게 해도 되나? 사실 반복문 쓰다가 이게 더 빨리 쓸 것 같아서 바꿔서 썼다.

 

28번 없는 숫자 더하기


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

 

후기: numbers를 가지고 뭘 하려고 하지 않고, 넘버를 냅두고 비교했다.

 

29번 제일 작은 수 제거하기


def solution(arr):
    if len(arr) == 1:
        return [-1]
    else:
        answer = arr.remove(min(arr))
        return arr

 

후기: min(list)를 이용하면 된다.

 

30번 가운데 글자 가져오기


def solution(s):
    if len(s) % 2 == 1:
        n = divmod(len(s), 2)
        answer = list(s).pop(sum(n)-1)
        return answer
    else:
        n = int(len(s)/2)
        answer = list(s).pop(n-1) + list(s).pop(n)
        return answer

 

인사이트


  1. pop()은 index값이 빠진다.
  2. str은 pop()하지 못한다.
  3. len값 / -1(연산)은 float형이라 pop()하지 못한다.