파이썬 알고리즘 2일차

이슬비·2022년 3월 2일
0

Algorithm

목록 보기
2/110

1.7.2 최대공약수

def finding_gcd(a,b):
    while(b!=0):
        result = b
        a, b = b, a%b
    return result 

def test_finding_gcd():
    num1 = 21
    num2 = 12
    assert(finding_gcd(num1, num2) == 3)
    print("테스트 통과")

if __name__=="__main__":
    test_finding_gcd()

최대공약수(gcd)를 찾는 문제이다.

먼저 a, b를 입력으로 받고 b가 0이 아닐 때까지 while문을 돌게 된다. 그 후 result는 b로 받고 (while 문에서 b를 확인하니까!) 상대적으로 큰 수 (b)와 나머지 수(a를 b로 나눴을 때의 나머지)를 a와 b에 다시 할당한다.

내가 수학적으로 최대공약수를 찾는 방법과 달라 조금 생소했다. 이를 활용한 백준 2824번 풀이.

N = int(input())
N_list = (input().split())
M = int(input())
M_list = (input().split())

A, B = 1, 1

for i in range(N):
    A *= i

for j in range(M):
    B *= j

while (B!=0):
    A, B = B, A%B

print(B)

1.7.3 random 모듈

import random
def testing_random():
    """random 모듈 테스트"""
    values = [1,2,3,4]
    print(random.choice(values))
    print(random.choice(values))
    print(random.choice(values))
    print(random.sample(values, 2))
    print(random.sample(values, 3))

    """values 리스트를 섞는다"""
    random.shuffle(values)
    print(values)

    """0~10의 임의의 정수를 생성한다"""
    print(random.randint(0, 10))
    print(random.randint(0, 10))

if __name__ == "__main__":
    testing_random()
  • random: 난수 생성
  • random.choice(values): values 리스트 안에서 1개 임의 선택
  • random.sample(values, 2): values 리스트 안에서 2개 임의 선택
  • random.shuffle(values): values 리스트 섞기
  • random.randint(0, 10): 0~10 사이의 임의 정수 생성
profile
정말 알아?

0개의 댓글