211009 알고리즘
코드잇 파이썬 기초문제
range 연습
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
# 인덱스와 원소 출력
# 코드를 입력하세요.
for i in range(len(numbers)):
print("{} {}".format(i, numbers[i]))
거듭제곱
for i in range(11):
print("2^{} = {}".format(i, 2**i))
for문으로 구구단
for i in range(1,10):
for j in range(1,10):
print("{} * {} = {}".format(i, j, i * j))
피타고라스 삼조
numbers = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
# 인덱스와 원소 출력
# 코드를 입력하세요.
for i in range(len(numbers)):
print("{} {}".format(i, numbers[i]))
거듭제곱
for i in range(11):
print("2^{} = {}".format(i, 2**i))
for문으로 구구단
for i in range(1,10):
for j in range(1,10):
print("{} * {} = {}".format(i, j, i * j))
피타고라스 삼조
for i in range(11):
print("2^{} = {}".format(i, 2**i))
for i in range(1,10):
for j in range(1,10):
print("{} * {} = {}".format(i, j, i * j))
피타고라스 삼조
1차시도 문제점
- 문제에서 제시하는 '단하나'라는 단서를 a < b, b < a 가 될수 없으니 a = b로 해석을 하고 풀이함
- 프로그래밍 문제를 수학적으로 계산해서 하나의 값을 도출 하는 형식으로함
✔2차시도 - 18분
힌트
for a in range(400):
for b in range(400):
for c in range(400):
풀이
for a in range(400):
for b in range(400):
if a < b:
for c in range(400):
if b < c:
if a**2 + b**2 == c**2 and a + b + c == 400:
print(a * b * c)
🙄비효율적인 코드
✔3차 효율적인코드로 짜기 - 10분
힌트
c=400−a−b
풀이
📌for c in range(400): 대신에 a와 b값으로 c값을 구하는 변수를 지정함으로써 3번
중첩루프를 돌려야되었던것을 2번
만 중첩하게함으로 연산량이 훨씬 적어짐
for a in range(400):
for b in range(400):
if a < b:
📌 c = 400 - a - b
if b < c:
if a**2 + b**2 == c**2:
print(a * b * c)
4차 Code Refactoring
풀이
📌 a<b
조건과 for b in range(400):
을 한줄로 적으려면 a보다 적은 b숫자는 필요 없으니 range(a,400)
을 사용하면 보다 간결해진다.
for a in range(400):
📌 for b in range(a, 400):
c = 400 - a - b
if b < c and a**2 + b**2 == c**2:
print(a * b * c)
리스트 뒤집기
numbers = [2, 3, 5, 7, 11, 13, 17, 19]
# 리스트 뒤집기
# 코드를 입력하세요.
max_range = len(numbers) // 2
len_of_numbers = len(numbers)
📌for i in range(max_range):
front = numbers[i]
back = numbers[len_of_numbers - 1 - i]
numbers[i] = back
numbers[len_of_numbers - 1 - i] = front
print("뒤집어진 리스트: " + str(numbers))
📌unpacking으로 풀기
for i in range(max_range):
numbers[i], numbers[len_of_numbers - 1 - i] = numbers[len_of_numbers - 1 - i], numbers[i]
Author And Source
이 문제에 관하여(211009 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@dldmsxor1177/211009-알고리즘
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
numbers = [2, 3, 5, 7, 11, 13, 17, 19]
# 리스트 뒤집기
# 코드를 입력하세요.
max_range = len(numbers) // 2
len_of_numbers = len(numbers)
📌for i in range(max_range):
front = numbers[i]
back = numbers[len_of_numbers - 1 - i]
numbers[i] = back
numbers[len_of_numbers - 1 - i] = front
print("뒤집어진 리스트: " + str(numbers))
for i in range(max_range):
numbers[i], numbers[len_of_numbers - 1 - i] = numbers[len_of_numbers - 1 - i], numbers[i]
Author And Source
이 문제에 관하여(211009 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dldmsxor1177/211009-알고리즘저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)