ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 알고리즘 초급 문제
    Python 2024. 7. 12. 23:21

    codekata 9번 문제부터 

    프로그래머스

     

    Q. 짝수의 합(정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성하시오)

    def solution(n):
        n = int(n)
        even_sum = 0
        for i in range(1, n+1): # range함수는 마지막 값 포함X
            if i % 2 == 0:
                even_sum += i
        return even_sum

     

    Q. 배열의 평균값 ( 정수 배열 numbers 매개변수로 주어짐. numbers 원소의 평균값을 return하도록 solution 함수 완성하기)

    def solution(numbers):
        average_num = sum(numbers)/len(numbers)
        return average_num

     

    다 더한 걸 numbers의 길이로 나눠주면 평균을 구할 수 있음


    Q. 짝수와 홀수 (정수 num 짝수일 경우 "Even" 반환하고 홀수인 경우 "Odd" 반환하는 함수 solution 완성하기)

    def solution(num):
        num = int(num)
        if num % 2 == 0 :
            return "Even"
        else:
            return "Odd"

     

    2로 나눴을 때 나머지가 0이면 짝수

     

     

    강의 stack 괄호 문제 보다가 코드카타 초반 문제 푸니까.. 마음의 조금 진정됐다..


    Q. 평균 구하기 (정수를 담고 있는 배열 arr 평균값을 return하는 함수, solution 완성하기)

    def solution(arr):
        answer = sum(arr)/len(arr)
        return answer

    Q. 자릿수 더하기

    자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만드시오.

    예를들어 N = 123이면 1 + 2 + 3 = 6 return 하면 됨

    def solution(n):
        n_str = str(n)
        sum_digit = 0
        for digit in n_str :
            digit_int = int(digit)
            sum_digit += digit_int
        return sum_digit

     

    처음엔 문자열로 바꾼 n에 for문 돌려서 자릿수를 나누고 다시 int로 바꿔서 더했는데.. 

    map을 사용하면 훨씬 간단해질것같았다.

    def solution(n):
        n_str = str(n)
        return sum(map(int, n_str))

     

    훨씬 간단해졌고, 테스트 결과도 통과(정답)


     

    Q. 약수의  (정수 n 입력받아 n 약수를 모두 더한 값을 리턴하는 함수, solution 완성하기)

     

    약수가 뭐더라 잠깐 생각했다...; 초등학교 수학도 까먹은건가.. 

    나같은 사람을 위해..

    약수: 어떤 자연수를 나누어떨어지게 하는 수. 어떤 수의 약수에는 1과 자기 자신이 항상 포함.

     

    n을 i로(i는 1부터 n까지의 수) 나눴을 때 나머지가 0인 값을 찾아서 다 더해주면 되니까

    def solution(n):
        sum_divisors = 0
        for i in range(1,n+1):
            if n % i == 0:
                sum_divisors += i
        return sum_divisors

     

    Q. 나머지가 1이 되는 수 찾기 (자연수 n 매개변수로 주어지고, n x 나눈 나머지가 1 되도록 하는 가장 작은 자연수 x return 하도록 solution 함수 완성하기)

     

    말그대로 n을 x로 나눴을 때 나머지가 1인 수 찾으면 되고, x 중 가장 작은 자연수를 구하라고 했으니까 처음 구해지는 값을 바로 리턴해주면 된다.

    def solution(n):
        for x in range(1,n+1):
            if n % x == 1:
                return x

    Q. x만큼 간격이 있는 n개의 숫자 (정수 x 자연수 n 입력 받아, x부터 시작해 x 증가하는 숫자를 n 지니는 리스트를 리턴)

     

    만약 n이 3이면 [x, x+x, x+x+x]

     

    리스트 개수는 n이니까 [x, 2x, 3x, .... n*x] 이런 리스트를 구하면 된다.

    def solution(x, n):
        xn = []
        for i in range(1,n+1):
            xn.append(x*i)
        return xn

    Q. 자연수 뒤집어 배열로 만들기 (자연수 n 뒤집어 자리 숫자를 원소로 가지는 배열 형태로 리턴)

     

    말 그대로 자연수 n을 str(문자열)로 바꾼 뒤 > reversed로 뒤집고 > map으로 각 문자열 하나하나를 int(정수)로 바꿔준 후 > 리스트로 만들어주면 된다.

    def solution(n):
        return list(map(int,reversed(str(n))))
        
    print(solution(123))
    print(solution(54321))

     

    확인해보면

    [3, 2, 1]
    [1, 2, 3, 4, 5]

     

    잘 나온다.

     

    프로그래머스에서도 정답

    다른 사람의 풀이 보기 를 클릭해서 보면 다른 사람들은 어떻게 풀었는지, 더 효율적으로 푸는 방법은 뭐가 있는지, 한줄코딩으로는 어떻게 쓸 수 있는지 등등에 대해 배울 수 있다. 

     

     

Designed by Tistory.