반응형
📘 Day 05. 문제 풀이 과정과 알고리즘 실습
1. 프로그램 구조의 기본 흐름
- 변수 정의
- 데이터를 저장할 메모리 공간 마련
- 알고리즘 표현
- 변수 값을 읽고, 변경하며 문제 해결
- 결과 도출
- 최종 결과를 사용자에게 출력
2. 알고리즘이란?
- 정의: 문제를 해결하기 위한 논리적 절차, 일처리 순서
- 형태: 의사코드(Pseudo code) 형태로 작성
- 조건:
- 입력이 있어야 함
- 출력이 있어야 함
- 유한하게 종료되어야 함
- 각 단계가 명확해야 함
- 명확하고 실용적이어야 함
- 다양한 입력에 일반적으로 적용 가능해야 함
3. 알고리즘 평가 기준
- 메모리 사용량: 적게 쓸수록 좋음
- 처리 속도: 빠를수록 좋음
※ 두 항목은 서로 트레이드오프 관계
4. 실습을 위한 문법 팁
- 반복 제어 변수를 사용하지 않을 때는 언더바(_) 사용
for _ in range(5):
print("반복")
- Symbolic Constant (의미 있는 상수):
- 상수 값을 변수처럼 정의
- 대문자로 작성하여 일반 변수와 구분
MAX_SCORE = 100
- 프로그램은 유지보수가 쉬워야 하며, 변경이 용이하도록 구성
- 입력값 오류 처리는 필수
- 예: 값의 범위, 형식 체크
5. 문제 풀이 단계
- 문제 분석 단계 (What)
- 입력: 무엇을 입력받는가?
- 조건: 어떤 제약이 있는가?
- 출력: 무엇을 출력해야 하는가?
- 알고리즘 설계 단계 (How - 개략)
- 해결 방법을 단계별로 구상
- 흐름도, 의사코드 등으로 표현
- 구현 단계 (How - 구체)
- 파이썬 문법을 이용하여 코딩
6. 실습 예제
📌 문제 1
10개의 정수를 입력받아 최대값과 최소값 출력
알고리즘
- max, min 변수 정의
- 10회 반복
- 정수 입력
- 입력된 값으로 max, min 갱신
- 최대값과 최소값 출력
max_num = -99999
min_num = 99999
for _ in range(10):
num = int(input("정수 입력: "))
if num > max_num:
max_num = num
if num < min_num:
min_num = num
print("최대값:", max_num)
print("최소값:", min_num)
📌 문제 2
5명의 점수를 입력받아 총점과 평균 출력
조건
- 점수는 0~100 사이
알고리즘
- total 변수 정의
- 5회 반복
- 점수 입력
- 유효성 검사 (0~100)
- 총점 누적
- 평균 계산
- 총점과 평균 출력
total = 0
for i in range(5):
score = int(input(f"{i+1}번 학생 점수 입력(0~100): "))
if score < 0 or score > 100:
print("잘못된 점수입니다.")
continue
total += score
avg = total / 5
print("총점:", total)
print("평균:", avg)
📌 문제 3
정수 입력 → 양수/음수/짝수/홀수 개수 계산
입력값이 -9999이면 종료
알고리즘
- 변수 정의 (pos, neg, even, odd)
- 반복 (종료 조건: -9999)
- 정수 입력
- 입력이 0이면 오류 처리
- 양수/음수 판별
- 양수일 경우 짝수/홀수도 판별
- 결과 출력
pos = neg = even = odd = 0
while True:
num = int(input("정수 입력 (-9999 입력시 종료): "))
if num == -9999:
break
if num == 0:
print("0은 처리 대상이 아닙니다.")
continue
if num > 0:
pos += 1
if num % 2 == 0:
even += 1
else:
odd += 1
else:
neg += 1
print("양수 개수:", pos)
print("음수 개수:", neg)
print("짝수 개수:", even)
print("홀수 개수:", odd)
✅ 오늘의 정리
항목 설명
알고리즘 | 문제 해결 순서 (입력 → 처리 → 출력) |
문제 풀이 단계 | 분석 → 설계 → 구현 |
유지보수 | 상수 정의, 오류 처리 고려 |
실습 예제 | 최대/최소, 총점/평균, 조건 반복 처리 |
다음 차시에서는 시퀀스 자료형의 개념과 문자열(str)의 다양한 기능을 배웁니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
07. 문자열(str)과 튜플(tuple) (1) | 2025.03.28 |
---|---|
06. 시퀀스 자료형 개요와 문자열(str) (0) | 2025.03.27 |
04. 기본 입출력, 연산자, 제어문, 문제 해결 (0) | 2025.03.25 |
03. 파이썬 기본 자료형 심화 (0) | 2025.03.24 |
02. 파이썬 프로그램 구조와 기본 자료형 (1) | 2025.03.23 |