[Python] 함수 - 기본 사용법 및 출력

2022. 12. 29. 00:21파이썬(Python)

반응형

1. 함수의 정의

- 원하는 목적이 있고, 목적을 사용할 수 있도록 해주는 하나의 도구

- 함수를 정의하기 위해서는 def을 사용

def 함수이름():
	코드 작성

 

ex) 별 10개를 n 줄에 걸쳐 반복하여 출력하기

**********
**********
**********

1) 함수를 사용하지 않을 때

n=int(input())

for i in range(n):
    print('*'*10)

2) 함수를 사용할 때

def print_stars():
  print('*'*10)
  
n=int(input())
for _ in range(n):
  print_stars()

2. 함수 - 인자

- 함수를 이용하여 가변적인 값이 주어졌을 때 사용.

- 인자는 소괄호 사이에 원하는 변수 이름을 작성

def 함수이름(인자):
	코드 작성

 

ex) 별 10개를 n 줄에 걸쳐 반복하여 출력하기

def print_stars(n):
    for _ in range(n):
        print('*'*10)
  
n=int(input())
print_stars(n)

 

- 인자가 2개 이상인 경우 인자들 사이에 , (콤마)를 넣는다.

def 함수이름(인자1, 인자2, ... , 인자n):
	코드 작성

 

ex) 별 m개를 n 줄에 걸쳐 반복하여 출력하기

def print_stars(m,n):
    for _ in range(n):
        print('*'*m)
  
m,n=map(int,input().split())
print_stars(m,n)
>> 4 5
****
****
****
****
****

Q) 숫자로 이루어진 사각형

- 정수 n을 입력하여 숫자로 이루어진 n*n 정사각형을 출력

- 1부터 9까지 순서대로 출력하고 9 다음에는 역순으로 1까지 출력

- 이를 반복

n=int(input())

def make_num_square(n):
    cnt=1
    isIncorDec=True  

    for _ in range(n):
        for _ in range(n):
            print(cnt,end=' ')
            if cnt==9: isIncorDec=False
            elif cnt==1: isIncorDec=True
            
            if isIncorDec==True: cnt+=1
            else: cnt-=1
        print()

make_num_square(n)

- isIncorDec : bool type. True이면 cnt를 증가. False이면 cnt를 감소

- cnt가 9가 되면 다시 감소해야 하기 때문에 isIncorDec를 False

- cnt가 1이 되면 다시 증가해야 하기 때문에 isIncorDec를 True


Q) 최대 공약수

- 정수 n, m을 입력. n과 m의 최대 공약수를 출력

 

n,m=map(int,input().split())

def two_num_gcd(n,m):
    min_num=min(n,m)
    for i in range(min_num,0,-1):
        if n%i==0 and m%i==0:
            print(i)
            break

two_num_gcd(n,m)

- n, m (n <m)의 공약수의 범위는 1부터 n (더 작은 수)까지이다.

- 1부터 n까지 숫자들 중 가장 큰 공약수가 최대 공약수이다.

- n부터 1까지 1씩 감소하면서 n과 m의 배수인지 확인한다.

- 두 수의 배수이면 그 수를 출력하고 멈춘다.


Q) 최소공배수

- 정수 n, m을 입력. n과 m의 최소 공배수를 출력

n,m=map(int,input().split())

def two_num_lcm(n,m):
    max_num=max(n,m)
    for i in range(max_num,n*m+1,max_num):
        if i%n==0 and i%m==0:
            print(i)
            break

two_num_lcm(n,m)

- n, m (n <m)의 공배수의 범위는 m (두 수중 큰 수)부터 n*m까지이다.

- m부터 n*m까지의 공배수 중 가장 작은 수가 최소 공배수.

- m의 배수 중에서 가장 먼저 n과 m의 배수이면 그 수가 최소 공배수

 

다른 풀이 (최대 공약수 활용)

n,m=map(int,input().split())

def two_num_lcm(n,m):
    min_num=min(n,m)
    for i in range(min_num,0,-1):
        if n%i==0 and m%i==0:
            print(n*m//i)
            break

two_num_lcm(n,m)

최대 공약수를 활용한 최소 공배수 구하는 식

- 두 수 a, b를 최대 공약수로 나눠 서로소 상태로 만든다.

- 서로소란 두 수의 최대 공약수가 1인 수

- 즉 서로소인 두 수최대 공약수를 곱하면 a, b의 최소 공배수가 된다.

- 따라서 두 수 a, b를 곱해 최대 공약수를 나누면 최소 공배수가 된다.