320x100
# 들어가는 글
'''
import math
def abs_sign(a):
if a >=0:
return a
else:
return -a
def abs_square(a):
b = a*a
return math.sqrt(b)
print(abs_sign(5))
print(abs_sign(-3))
print()
print(abs_square(5))
print(abs_square(-3))
'''
# 첫번째 마당
# 알고리즘 기초
# 첫번째 문제
'''
# 내가 푼 문제
# 1. 1부터 10까지의 수를 모두 더하면?
total = 0
for i in range(1,11):
total += i
print(total)
# 2. 1부터 100까지의 수를 모두 더하면?
total = 0
for i in range(1,101):
total += i
print(total)
# 너무 연습이 되어있어서 쉽게 풀었다. 하지만 해설을 보자 내 코드가 좋은 코드가 아님을 깨달았다.
# 왜냐하면 간단하게 축약이 가능하기 때문이다.
# 함수 정의 기능을 사용해서 답안 보지 말고 해보자
'''
'''
# 내가 함수 정의해서 다시 풀어본 문제
# 1회 실패. - 위에 먼저 풀어두었던 수식을 주석처리 하지 않아서
# 2회 실패 - 이미 정의된 함수에 print 기능이 내장되어있음에도 print(hand(10)) 이런식으로 써줘서 값이 none, 55 이런식으로 나왔다.
def hand(i):
total=0
for a in range(i+1): # 이거는 생각조차 못하고 있었는데 해설을 배꼈다. i+1만 하지만 이것도 크다.
total +=a
print(total)
hand(10)
hand(100)
'''
'''
# 첫번째 해설코드
# 1부터 n까지 연속한 숫자의 합을 구하는 알고리즘 1
# 입력 n
# 출력 1부터 n까지의 숫자를 더한 값
def sum_n(n):
s = 0
for i in range(1,n+1):
s= s+i
return s # 이부분에서 나의 정의 수식과 차이점이 되었다. 보통 보면 마지막 정의를 return으로 해주더라. print가 아니라.
# 경우에 따라서 달라질 수 있겠지만 이 케이스에서는 마지막 정의를 print로 하게 되면 불필요한 값까지 출력된다.
print(sum_n(10))
print(sum_n(100))
'''
'''
# 두번째 해설코드
def sum_n(n):
return n *(n+1) //2
print(sum_n(10))
print(sum_n(100))
# 확실히 선순위가 함수정의. 후순위로 수학 수식까지 알면 정말 수식이 간결해진다.
# 이 수식에 대해서 본 기억은 있으나 전혀 기억나지 않았다.
'''
'''
위 처럼 같은 문제를 풀때도 두개의 해설을 준 이유가,
식이 보기에도 간결할 수록, 연산이 짧아질 수록 프로그램을 돌리는데 좋은 코드라고 한다
첫번째 해설코드는 덧셈 n번이지만 두번째는 덧셈,곱셈,나눗셈 각 한번으로써 총 세번으로 끝난다고 한다.
시간 복잡도
공간 복잡도에 대해서도 말했다.
주저리 거릴필요도 없다.
내가 동일한 문제를 직면했을때 얼마나 수학수식에 대해서 내 안에 녹아져 있느냐 없느냐에 따라서
저런 코드를 만들어 낼 수 있을거라고 생각한다.
'''
300x250
'개발일지 > Python' 카테고리의 다른 글
2022.02.08 파이썬정복 13장 예외 처리 (0) | 2022.02.08 |
---|---|
2022.02.08 ㅈ같지만 다시시작 파이썬 모듈 (0) | 2022.02.08 |
2022.02.07 파이썬정복 12장 표준 모듈 ft. 책버림 (0) | 2022.02.07 |
2022.02.04 파이썬 정복 11장 컬렉션, 람다 (0) | 2022.02.04 |
2022.02.02 파이썬정복 10장 사전, 집합 (0) | 2022.02.02 |