20번대 문제까지는 순서도 먼저 그리고 코딩해서 결과 확인했는데,, 30번대로 넘어가니까 순서도 먼저 그리기가 힘들어짐 ㅎ
그래서 그냥 막히면 일단 코딩해보고 순서도의 어느 부분이 잘못된건지 확인하고,,, 이렇게 해버렸다리,,
나의 뇌를 컴퓨터화 시키자..!
[순서도 그리기 예제 20]
- 반복문을 사용해 숫자 10부터 1까지 출력하세요.
- i가 10부터 1씩 감소하며 1이 될 때까지 반복하며 i 값을 출력한다.
i = 10
while i >= 1:
print(i)
i -= 1
[순서도 그리기 예제 21]
- 숫자 1부터 100까지의 합 구하세요.
- 0으로 초기화되어 있는 변수 sum에 숫자 1부터 100까지 1씩 증가하는 i 값을 계속 더해 1부터 100까 지의 합을 구합니다.
sum = 0
for i in range(1, 101):
sum += i
print(sum)
[순서도 그리기 예제 22]
- 1부터 100까지의 수 중 짝수의 합 구하기(1)
- i가 2부터 2씩 증가하며 100이 될 때까지 반복하며 sum에 i 값을 누적합니다.
sum = 0
i = 2
while i <= 100:
sum += i
i += 2
print(sum)
[순서도 그리기 예제 23]
- 1부터 100까지의 수 중 짝수의 합 구하기(2)
- i가 1부터 1씩 증가하며 100이 될 때까지 반복하며 i가 짝수인 경우 sum에 i 값을 누적한다.
- i를 2로 나눈 나머지가 0이면 i는 짝수이다.
sum = 0
i = 1
while i <= 100:
if i % 2 == 0:
sum += i
i += 1
else:
i += 1
print(sum)
[순서도 그리기 예제 24]
- 1, -2, 3, -4, ..., 99, -100의 합 구하기
- i가 1부터 1씩 증가하며 100이 될 때까지 반복하며 i가 홀수면 sum에 i 값을 더하고, i가 짝 수면 sum에서 i 값을 뺀다.
sum = 0
i = 1
while i <= 100:
if i % 2 == 1:
sum += i
i += 1
else:
sum -= i
i +=1
print(sum)
[순서도 그리기 예제 25]
- 계승 구하기
- 계승이란 1부터 임의의 양의 정수 n까지의 수를 모두 곱한 것을 말하며 n!로 나타낸다.
- 예를 들어 5의 계승은 5!로 표시하며 1*2*3*4*5 이다. 그런데, 여기서 0!은 1로 정의한다.
5!은 1로 초기화되어 있는 변수 fact에 5부터 1까지 1씩 감소하는 i 값을 곱해 구한다.
n = input("양의 정수를 입력해주세요: ")
n = int(n)
factorial = 1
for i in range(n):
factorial *= (n-i)
print(factorial)
[순서도 그리기 예제 26]
- 약수 구하기
- 임의의 수를 나누었을 때 나누어떨어지게 하는 수를 약수라 한다.
- 즉, n의 약수는 1부터 n까지의 수로 n을 나누어떨어지게 하는 수가 된다.
- 예를 들면, 10의 약수는 1부터 10까지 수들로 나누었을 때 나머지가 0이 되게 하는 수, 즉 1, 2, 5, 10이 된다.
n = input("양의 정수를 입력하세요: ")
n = int(n)
list_ = []
for i in range(1, n+1):
if n % i == 0:
list_.append(i)
print(list_)
[순서도 그리기 예제 27]
- 공약수 구하기
- 공약수란 0이 아닌 두 정수의 공통되는 약수를 말한다. 즉, 두 정수를 나누어떨어지게 하는 공통의 수를 의미한다.
n1과 n2의 공약수는 1부터 n1까지 1씩 증가하는 i로 n1과 n2 모두를 나누어떨어지게 하는수가 된다. - 단, n1이 n2보다 작다고 가정한다.
n1 = input("n1 (n1<n2) :")
n2 = input("n2 (n1<n2) :")
n1 = int(n1)
n2 = int(n2)
list_ = []
for i in range(1, n2+1):
if n1 % i == 0 and n2 %i == 0:
list_.append(i)
print(list_)
[순서도 그리기 예제 28]
- 최대공약수 구하기
- 두 정수의 공약수 중 가장 큰 것을 최대공약수라 한다.
- 그러므로 n1과 n2의 최대공약수는 n1부터 1까지 1씩 감소하는 i로 n1과 n2 모두를 나누어떨어지게 하는 첫 번째 수가 된다. 단, n1이 n2보다 작다고 가정한다.
n1 = input("n1 (n1<n2) :")
n2 = input("n2 (n1<n2) :")
n1 = int(n1)
n2 = int(n2)
for i in range(n1, 0, -1):
if n1 % i == 0 and n2 % i == 0:
print(i)
break
[순서도 그리기 예제 29]
- 소수 판별하기
- 소수란 2, 3, 5, 7, …과 같이 1과 자기 자신 이외의 양의 약수를 가지지 않는 1보다 큰 자연수를 말한다.
n = input("1보다 큰 자연수를 입력해주세요: ")
n = int(n)
list_ = []
for i in range(1, n+1):
if n % i == 0:
list_.append(i)
if len(list_) == 2:
print("소수 입니다.")
else:
print("소수가 아닙니다.")
[순서도 그리기 예제 30]
- 피보나치수열 구하기
- 다음과 같은 수열이 있다.
- 1 1 2 3 5 8 13 21 34 55 …
- 이 수열의 "두 번째 항" 이후의 항들은 "이전의 두 항"을 더해 구해진다.
- 즉, 첫 번째 항과 두번째 항을 더한 값이 세 번째 항이 되고, 두 번째 항과 세 번째 항을 더한 값이 네 번째 항
이 된다. 이와 같은 수열을 피보나치수열이라 한다.
a = 1
b = 1
list_ = [a, b]
for i in range(2, 21):
c = a + b
list_.append(c)
a = list_[i-1]
b = list_[i]
print(list_)
[순서도 그리기 예제 31]
- 최댓값 구하기
- max 값과 새롭게 입력받은 a 값을 비교하여 큰 값을 max에 저장하는 동작을 반복하며 최댓값을 구한다.
max_ = 1
for i in range(7):
a = input("정수 a를 입력하세요: ")
a = int(a)
if max_ > a:
continue
else:
max_ = a
print(max_)
[순서도 그리기 예제 32]
- 직각 삼각형 모양으로 수 출력하기
- 바깥쪽 반복문은 i 값을 1부터 5까지 반복하고, 안쪽 반복문은 j 값을 1부터 i까지 반복하며 j 값을 출력하면 다음과 같이 된다. 단, 안쪽 반복문을 마치면 “ \n”을 이용해서 다음 줄로 넘긴다.
num = 5
for i in range(1, num+1):
for j in range(1, i+1):
print(f"{j}", end="")
print()
[순서도 그리기 예제 33]
- 1부터 10까지의 정수에 대한 약수 구하기
- 중첩 반복 구조를 이용해서 1부터 10까지의 정수에 대한 약수를 구한다.
- 약수를 구하는 방법은 예제 26에서 살펴보았다.
for i in range(1, 11):
list_ = []
for j in range(1, i+1):
if i % j == 0:
list_.append(j)
print(f"{i}의 약수: {list_}")
[순서도 그리기 예제 34]
- 2부터 100까지의 소수 구하기
- i가 2부터 1씩 증가하며 100이 될 때까지 반복하며 각 i 값이 소수인지 판별합니다.
- 소수를 판별하는 방법은 예제 29에서 살펴보았습니다.
- 아래 실행 결과와 같은 값을 출력하세요.
i = 2
output = []
while i <= 100:
list_ = []
for j in range(1, i+1):
if i % j == 0:
list_.append(j)
# print(list_)
if len(list_) == 2:
output.append(i)
i += 1
print(output)
[순서도 그리기 예제 35]
- 1, (1+2), (1+2+3), …, (1+2+ … +10)의 합 구하기
- i가 1부터 1씩 증가하며 10이 될 때까지 반복하며 n은 i 값을 누적하고, sum은 n 값을 누적하여 원하는 값을 구한다.
n = 0
sum_ = 0
for i in range(1, 11):
n += i
sum_ += n
print(sum_)
[순서도 그리기 예제 36]
- 다음과 같은 형식으로 출력되는 구구단 순서도와 프로그램을 작성한다.
- 각 단에 해당하는 2부터 9까지의 수는 변수 i로, 곱하여지는 수 1부터 9까지는 변수 j로, 곱한결과는 j*j로 나타낸다.
for i in range(2, 10):
for j in range(1, 10):
print(f"{i} * {j} = {i*j}\t", end="")
print()
'Python' 카테고리의 다른 글
[2025.03.04] 물고기 키워 팔기 게임 (0) | 2025.03.04 |
---|---|
[2025.03.01] 숫자야구 게임 만들기 (0) | 2025.03.04 |
[2025.02.28] 순서도 그리기_2 (0) | 2025.02.28 |
[2025.02.27] 순서도 그리기_1 (0) | 2025.02.27 |
[2025.02.27] 함수 (0) | 2025.02.27 |