미갱이 스터디 5/25

코변·2022년 5월 25일
0
post-thumbnail

Photo by Pietro Mattia on Unsplash

없는 숫자 더하기

def solution(numbers):
    answer = 0
    ab_set = set([0,1,2,3,4,5,6,7,8,9])
    diff_set = ab_set - set(numbers)
    for num in diff_set:
        answer+= num
    return answer

ab_set이라는 집합에서 주어진 리스트를 집합으로 바꾼 값을 빼면 없는 숫자들의 집합인 diff_set을 구할 수 있다 이를 가지고 for문 안에서 각 숫자들을 더해 최종 정답을 구할 수 있었다.

두 정수 사이의 합

def solution(a, b):
    answer = 0
    if a > b:
        a, b = b, a
    for i in range(a,b+1):
        answer+=i
    return answer

b가 무조건 크다고 생각한 함정에 빠져 약간 버벅였던 문제 a가 더 크다면 두 값의 위치를 바꾸는 조건문을 통해서 풀 수 있었다.

k번째 수

def solution(array, commands):
    answer = []
    for command in commands:
        tmp = sorted(array[command[0]-1:command[1]])
        answer.append(tmp[command[2]-1])
    return answer

리스트 슬라이스를 통해서 문제를 풀었다. 슬라이스에 제공하는 시작점 끝점이 조금 헷갈려서 노트에 적으면서 풀었다. 2차원 리스트에 더하는 부분에서 코드 줄 수를 더 줄일 수 있겠지만 일단 지금은 이정도로 만족한다.

자릿수 더하기

def solution(n):
    answer = 0
    for num in str(n):
        answer += int(num)
    return answer

n의 각 자릿수를 더해 값을 반환하는 문제 파이썬에서는 문자열을 나눠 for문 안에서 각 자리수를 조회할 수 있으므로 조회한 각 자리수를 다시 인트로 변환해 더하면 최종 답을 구할 수 있다.
내적

def solution(a, b):
    answer = 0
    for num_a, num_b in zip(a,b):
        answer+= (num_a * num_b)
    return answer

행렬의 내적을 구하는 문제 각 자리수를 어떻게 한꺼번에 조회할 것인가를 고민해야 하는 문제인 것 같다. 나는 파이썬 내장함수 zip을 통해서 두 리스트의 값들을 불러왔다. 여러 리스트의(거의 길이가 같거나 한쪽의 길이만으로 충분할 때 자주 쓰이는 듯 하다.) 같은 위치의 인자값들을 불러와 한번에 다룰 수 있는 재미있는 기능이다.

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

0개의 댓글