코딩테스트 연습 1일차

김채원·2023년 1월 28일
0

coding_test

목록 보기
1/11

프로그래머스 연습문제 기준으로 레벨 1부터 3까지 모두 푸는 것을 목표로 한다. 실패하지 않고 매일매일 꾸준히 하는 것이 목표. 중도에 포기하지 않도록 기록을 남기는걸로...ㅋㅋ;;

코딩테스트의 부진이 너무 심해서...
조금만 손 떼도 하나도 기억 안 남, 금붕어 아님?
끙끙거려도 무조건 혼자 푸는걸 목표로!!!

머리가 나빠 되게 조잡할 수도 있으니...
마음에 안 드시다면 더욱 효율적인 방법을 알려주세요~ㅎㅎ
저야 완전 감사합니다!!!! 귀하디 귀한 선배들의 조언!!!!

Lv.1

짝수와 홀수

def solution(num):
    answer = 'Odd'
    
    if num%2 == 0:
        answer = 'Even'
    
    return answer

평균 구하기

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

약수의 합

역시나 가장 먼저 떠올린건 무식하게 for문을 다 도는 방법.
이건 시간복잡도 O(N)으로 비효율적인데도 계속 생각하게 된다.
"임의의 자연수 N의 약수들 중에서 두 약수의 곱이 N이 되는 약수 A와 B는 반드시 존재한다" <이걸 머릿속에 쑤셔박아야 한다.
즉, 자연수 N의 제곱근 까지만 구하면 그 짝의 약수는 자동으로 구해짐.

제곱근까지 구하고, 그 if문 안에 i != N//i <이 if문을 한번 더.
앞뒤로 차례대로 구하기.
이 방법의 시간복잡도는 O(n^(1/2))

def solution(n):
    answer = 0
    
    for i in range(1,int(n**(1/2)+1)):
        if n % i == 0:
            answer += i
            if i!= (n//i):
                answer += (n//i)
                
    return answer

자릿수 더하기

나는 str로 바꾸는 방법부터 생각남. 거의 고정관념수준...
str>int>list>sum

def solution(n):
    answer = 0
    lst = list(map(int,str(n)))
    answer = sum(lst)
    return answer

자연수 뒤집어 배열로 만들기

난 슬라이싱이나 인덱싱 좋아함

def solution(n):
    n = str(n)[::-1]
    answer = list(map(int,str(n)))
    return answer
profile
잡다한 공부 기록용

0개의 댓글