올바른 알고리즘 이란 어떠한 경우에도 실행 결과가 똑같이 나오는 것. 만약 알고리즘의 실행 결과가 어떤 경우에는 맞고 어떤 경우에는 틀리면 올바른 알고리즘이라고 할 수 없음.
가우스 덧셈
n = int(input("n 값을 입력하세요.: "))
sum = 0
"""
// 은 몫 연산자(floor division)임
숫자를 나눈 몫에 더해줌
"""
sum = n * (n + 1) // 2
print(f"1부터 {n}까지 정수의 합은 {sum}입니다.")
a 부터 b 까지 정수의 합 구하기
a = int(input("정수 a를 입력하세요.: "))
b = int(input("정수 b를 입력하세요.: "))
if a > b:
# a와 b를 교환, 무조건 a가 b보다 작게됨
a, b = b, a
sum = 0
for i in range(a, b + 1):
sum += i
print(f"{a}부터 {b}까지 정수의 합은 {sum}입니다.")
반복 문에서 _
사용
# i 와 같이 반복 문 내 순환하며 반환하는 값이 필요 없을 경우 _ 사용
# n이 짝수일 경우 절반 출력, 12 입력 시 6번 반복
for _ in range(n // 2):
print("+-", end="")
n = int(input("몇 개를 출력할까요?: "))
w = int(input("몇 개마다 줄바꿈할까요?: "))
# n을 w로 나눠 반복, * 를 w개 출력
# ex) 10, 3 입력 시 3번 반복 하는데, * 3개씩 출력
for _ in range(n // w):
print("*" * w)
# n을 w로 나눈 값 중, 나머지가 있을 경우
# 나머지 값을 곱하여 * 출력
# ex) 10, 3 입력 시 나머지 값은 1, * 1개 출력
rest = n % w
if rest:
print("*" * rest)
가로, 세로 길이가 정수이고 넓이가 area인 직사격형에서 변의 길이 나열하기
area = int(input("직사각형의 넓이를 입력하세요.: "))
# 약수를 나열
for i in range(1, area + 1):
# i가 area의 제곱근보다 크면 종료
# ex) 32의 제곱근은 5.65, 6부터는 32의 약수가 나오지 않음, i 가 6일 때 종료
if i * i > area:
break
# area를 i로 나누어 나머지가 없을 경우
# ex) 32를 1로 나누면 나머지가 없음, 1은 32의 약수
# ex) 32를 2로 나누면 나머지가 없음, 2는 32의 약수
# ex) 32를 3로 나누면 나머지가 있음, 3은 32의 약수가 아님
# ex) 32를 4로 나누면 나머지가 없음, 4는 32의 약수
# ex) 32를 5로 나누면 나머지가 있음, 5는 32의 약수가 아님
if area % i:
continue
# i와 area // i를 출력
# //는 몫 연산자
# ex) 1로 나눈 몫은 32, 32 // 1 = 32
# ex) 2로 나눈 몫은 16, 32 // 2 = 16
# ex) 4로 나눈 몫은 8, 32 // 4 = 8
print(f"{i} x {area // i}")
for
문 조건에 list
두개 사용하기
# 1부터 12까지 8을 건너뛰고 출력하기
# for문 내 list를 두개 사용
for i in list(range(1, 8)) + list(range(9, 13)):
print(i, end=" ")
드모르간의 법칙
# 2자리 양수만 입력 받기
while True:
no = int(input("2자리 양수를 입력하세요.: "))
# 드모르간의 법칙 사용
if not(no < 10 or no > 99):
break
print(f"입력받은 양수는 {no}입니다.")
and
y = not(not x or
not y) : 논리 값은 같음or
y = not(not x and
not y) : 논리 값은 같음공백과 출력으로 이등변 삼각형 그리기
n = int(input("짧은 변의 길이를 입력하세요.: "))
for i in range(n):
# n - i - 1 만큼 공백 출력
# ex) 10 입력 시 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
for _ in range(n - i - 1):
print(" ", end="")
# i + 1 만큼 * 출력
# ex) 10 입력 시 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
for _ in range(i + 1):
print("*", end="")
print()