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를 곱해 최대 공약수를 나누면 최소 공배수가 된다.
'파이썬(Python)' 카테고리의 다른 글
[Python] 함수 - return 반환 값을 이용한 예제 프로그램 작성 (연산, 연속 부분 수열, 날짜 및 날씨) (0) | 2023.01.04 |
---|---|
[Python] 함수 - return 값 반환. 기본값 설정. asterisk (0) | 2023.01.03 |
문자열 변환 (0) | 2022.12.24 |
문자열 회전, 아스키 코드 (0) | 2022.11.10 |
문자열 문제풀이2 (0) | 2022.11.09 |