[Programmers] 최대공약수와 최소공배수 / 콜라츠 추측 / 평균 구하기 / 하샤드 수 (python)

yourmean·2021년 2월 10일
0

Algorithm - Programmers

목록 보기
9/13
post-thumbnail

🌴 최대공약수와 최소공배수

문제 링크

해결 전략

n, m : 1이상 1000000이하의 자연수

  1. n, m의 최대공약수는 min(n,m)보다 크지 않음.
  2. 따라서 while문에서 n, m을 모두 나누어 떨어지게 하는 i를 발견하면 answer에 append & break
  3. n과 m의 최대공약수최소공배수 = nm 이므로, n*m/answer[0]을 answer에 append

Source Code

def solution(n, m):
    answer = []
    
    #최대공약수
    i=min(n,m)
    while i>=0:
        if n%i==0 and m%i==0 or i==1:
            answer.append(i)
            break
        else:
            i-=1
    
    #최소공배수
    answer.append(n*m/answer[0])
    
    return answer

🌴 콜라츠 추측

문제 링크

해결 전략

num : 1이상 8000000미만의 정수

  1. 주어진 규칙이 다음과 같으므로, 그대로 실행
    • 입력된 수가 짝수라면 2로 나눔
    • 입력된 수가 홀수라면 3을 곱하고 1을 더함
    • 결과로 나온 수에 같은 작업을 1이 될 때까지 반복
  2. 단, 500회 반복시에도 1이 되지 않는 경우 answer=-1

Source Code

def solution(num):
    answer = 0
    if num==1:
        return answer
    while answer<=500:
        num= num/2 if num%2==0 else num*3+1
        answer+=1
        if num==1:
            break
    return answer if answer<500 else -1

🌴 평균 구하기

문제 링크

해결 전략

arr : 길이 1 이상, 100 이하인 배열. 원소는 -10,000 이상 10,000 이하인 정수

  1. 배열의 원소를 다 합하고 /len(arr). 그냥 평균 구해주자

Source Code

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


🌴 하샤드 수

문제 링크

해결 전략

x : 1 이상 10000 이하인 정수

  1. x의 자릿수의 합(hsd)으로 x가 나누어지는 경우 True, 아니면 False return

Source Code

def solution(x):
    hsd= int(sum(map(int, str(x))))
    return True if x%hsd==0 else False
profile
𝐼 𝑒𝑖𝑡ℎ𝑒𝑟 𝑤𝑖𝑛 𝑜𝑟 𝑙𝑒𝑎𝑟𝑛 💪🏻

0개의 댓글