article thumbnail image
Published 2022. 3. 23. 06:59

모듈

  • 모듈이란 파이썬 코드를 작성한 스크립트 파일
    • 함수, 변수, 클래스 등이 정의되어 있음
  • 파이썬은 자주 사용하는 기능을 표준 모듈로 미리 작성하여 설치해 두므로 가져와 사용하면 됨
  • 표준 모듈은 언어의 일부는 아니지만 해석기와 함께 설치되기 때문에 언제든지 사용 가능
  • 이 모듈의 집합이 바로 표준 라이브러리
  • 외부의 모듈을 가져와 사용할 때 import 명령을 사용
  • 이 명령에 의해 모듈에 정의된 코드가 현재 소스로 읽힘 
  • 기능별로 모듈이 나누어져 있어 쓰고자 하는 기능에 따라 적절한 모듈을 import 해야 함

 

import math # 모듈 전체 import

print(math.sqrt(2)) # 모듈 내 함수 호출
  • 모듈 전체를 import할 때는 'import 모듈'
  • 해당 모듈에 작성된 모든 상수와 함수를 가져옴
  • 이후 마치 소스에서 직접 정의한 것처럼 모듈 내의 함수를 자유롭게 호출 가능
  • 모듈의 함수를 호출할 때는 함수명 앞에 모듈명을 붙여 소속을 밝힘
import math as m # 모듈의 별명 지정 가능

print(m.sqrt(2)) # 함수 호출 시 모듈명 대신 별명 사용
  • 모듈 이름이 길고 복잡하면 함수명 앞에 모듈명을 일일이 붙이기 번거로움
  • import문의 as 다음에 모듈의 별명을 지정하면 모듈명 대신 별명 사용 가능
from math import sqrt # 모듈 내 특정 함수를 import

print(sqrt(2)) # 소속을 밝힐 필요 없이 함수명으로 바로 호출 가능
  • 특정 함수만 import할 때는 'from 모듈 import 함수명'
  • 같은 모듈 소속의 함수는 콤마로 구분하여 여러 개 불러올 수 있음
  • 모둘의 모든 함수를 다 불러올 때는 함수명 자리에 * 문자 사용
from math import sqrt as sq # 함수에 대해서도 별명 지정이 가능

print(sq(2))
  • import몬은 보통 소스의 앞쪽에 작성하지만 꼭 그럴 필요는 없음
  • 소스 중간에도 필요할 때 import문 사용 가능

 

프로그래머스 lev1 정수 제곱근 판별

 

작성 코드

import math

def solution(n):
    s = math.sqrt(n)
    return (int(s) + 1) ** 2 if s - int(s) == 0.0 else -1

※ 굳이 정수로 반환할 필요는 없어 보임

 

다른 풀이

def solution(n):
    sqrt = n ** (1/2)
    return (sqrt + 1) ** 2 if sqrt % 1 == 0 else -1

1. 제곱근 구하기

  • math 모듈 import없이
  • n ** (1/2) = n ** 0.5 = n ** .5

2. 양의 정수 제곱근이 있는지 확인

  • sqrt % 1 == 0
  • 나머지가 0이 아니라는 것은 양의 정수가 아니라는 것

 

프로그래머스 lev1 최대공약수와 최소공배수

 

작성 코드

def solution(n, m):  
    divisor = min(n, m)
    multiple = max(n, m)
            
    while n % divisor != 0 or m % divisor != 0:
        divisor -= 1
    while multiple % n != 0 or multiple % m != 0:
        multiple += 1   
    
    return [divisor, multiple]

 

다른 풀이

def solution(a, b):
    gcd, lcm = min(a, b), max(a, b)
    while gcd != 0:
        r = lcm % gcd
        lcm, gcd = gcd, r
    answer = [lcm, a * b / lcm]
    return answer

 

최대공약수 (greatest common factor)

 

유클리드 호제법

2개의 자연수 a, b(a > b)에 대해서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다.

 

1071과 1029의 최대공약수를 구하면,

  • 1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42
  • 1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21
  • 42는 21로 나누어 떨어진다.

따라서, 최대공약수는 21이다.

 

최소공배수 (Least Common Multiple)

두 수 a와 b의 최소공배수는 a와 b의 곱a와 b의 최대공약수를 나눈 것과 같다. 

'프로그래밍 > Python' 카테고리의 다른 글

[Python] sort, join  (0) 2022.03.26
[Python] 문자열  (0) 2022.03.21
[Python] 2차원 리스트, zip  (0) 2022.03.20
[Python] 리스트  (0) 2022.03.19
[Python] map, input, strip, split  (0) 2022.03.18
복사했습니다!