2023. 1. 4. 00:21ㆍ파이썬(Python)
Q) 연산 함수
- 연산 6개의 함수 +, -, *, /, %, ^ 를 작성.
- 2개의 정수와 1개의 연산자를 입력
- 연산 결과는 정수로 출력
def plus(a,b):
return a+b
def minus(a,b):
return a-b
def multiple(a,b):
return a*b
def divide(a,b):
return a//b
def modular(a,b):
return a%b
def square(a,b):
return a**b
def operator(a,o,b):
if o=='+':
return plus(a,b)
if o=='-':
return minus(a,b)
if o=='*':
return multiple(a,b)
if o=='/':
return divide(a,b)
if o=='%':
return modular(a,b)
if o=='^':
return square(a,b)
else:
return False
inp=input().split()
inp[0],inp[2]=int(inp[0]),int(inp[2])
print(operator(inp[0],inp[1],inp[2]))
결과
>> 8 + 5
13
>> 9 - 19
-10
>> 7 * 6
42
>> 45 / 6
7
>> 11 ^ 4
14641
>> 45 % 4
1
Q) 연속 부분 수열 판단
- n1개의 원소를 가진 수열 A와 n2개의 원소를 가진 수열 B를 입력한다.
- n1 >= n2
- 수열 B는 수열 A의 연속 부분 수열이면 True, 아니면 False를 출력
- 수열 A의 원소들을 연속하게 뽑을 때 수열 B에서 나올 수 있는 수열이면 연속 부분 수열이다.
n1,n2=map(int,input().split())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
def is_same(i):
for j in range(n2):
if b[j]!=a[i+j]:
return False
return True
def is_subsequence():
for i in range(n1-n2+1):
if is_same(i):
return True
return False
if is_subsequence(): print('Yes')
else: print('No')
결과
>> 6 3
>> 1 2 3 4 5 6
>> 3 4 5
Yes
>> 6 3
>> 1 2 3 4 5 6
>> 3 4 6
No
is_subsequence()
- 연속 부분 수열인지 판별하는 함수
- 수열 B가 수열 A의 연속 부분 수열이어야 하므로
- 수열 B의 첫 번째 원소가 수열 A의 인덱스 범위는 0 ~ n2-n1이다.
- is_same() 함수가 True이면 연속 부분 수열이고 False면 연속 부분 수열이 아니다.
is_same()
- 수열 B가 수열 A의 부분 수열과 같은지 확인하는 함수
- for문을 사용해 수열 B의 길이(n2)만큼 반복하여 a와 b의 원소를 비교한다.
- 같으면 for문을 실행하고 한 번이라도 다르면 연속 부분 수열이 아니기 때문에 False를 반환한다.
- for문에서 비교한 원소가 모두 같으면 연속 부분 수열이기 때문에 True를 반환한다.
Q) 날짜와 계절
- 연도, 월, 일을 정수 형태로 입력
- 입력한 날짜가 존재하면 Yes. 존재하지 않으면 No를 출력
- 입력한 날짜의 계절을 출력
- 봄 (3~5). 여름 (6~8). 가을 (9~11). 겨울 (12~2) (월을 기준)
- 존재하지 않는 날짜는 None으로 출력
def leapyear(y):
if y%4==0:
if y%100==0:
if y%400==0:
return True
else:
return False
else:
return True
else:
return False
def range_day(a,b):
if d>=a and d<=b: return True
else: return False
def YesOrNo(y,m,d):
if m==2:
if leapyear(y): return range_day(1,29)
else: return range_day(1,28)
elif m in [4,6,9,11]:
return range_day(1,30)
elif m in [1,3,5,7,8,10,12]:
return range_day(1,31)
else:
return False
def season(m):
if m in [3,4,5]:
return '봄'
elif m in [6,7,8]:
return '여름'
elif m in [9,10,11]:
return '가을'
else:
return '겨울'
y,m,d=map(int,input().split())
if YesOrNo(y,m,d):
print('Yes')
print(f'계절은 {season(m)}')
else:
print('No')
print('계절은 None')
결과
>> 2023 8 15
Yes
계절은 여름
>> 2020 2 29
Yes
계절은 겨울
>> 2023 9 31
No
계절은 None
leapyear()
- 윤년인지 판단하는 함수
- 4의 배수. 100의 배수가 아님. 400의 배수
range_day()
- 월에 따라 일이 정해진 범위에 있는지 판단하는 함수
YesOrNo()
- 입력한 날짜가 존재하는지 판단하는 함수
- 1~12월까지 2월은 윤년인 경우 29일까지, 아닌 경우 28일까지는 True
- 4, 6, 9, 11월 30일까지 True
- 나머지 월은 31일까지 True
- 월과 일이 범위 밖이면 False
Season()
- 입력한 날짜를 통해 계절을 출력하는 함수
- 입력한 날짜가 존재하지 않는 경우는 None을 출력
- 3~5월은 봄. 6~8월은 여름. 9~11월은 가을. 12~2월은 겨울 출력
'파이썬(Python)' 카테고리의 다른 글
[Python] 재귀함수 - 값이 반환되지 않을 때, 종료 조건, 출력 위치, 대칭 문제 (0) | 2023.01.20 |
---|---|
[Python] 변수 - Mutable vs Immutable (0) | 2023.01.13 |
[Python] 함수 - return 값 반환. 기본값 설정. asterisk (0) | 2023.01.03 |
[Python] 함수 - 기본 사용법 및 출력 (0) | 2022.12.29 |
문자열 변환 (0) | 2022.12.24 |