십대를 위한 코딩/십대를 위한 파이썬

05. 문제 풀이 과정과 알고리즘 실습

forSilver 2025. 3. 26. 15:30
반응형

📘 Day 05. 문제 풀이 과정과 알고리즘 실습


1. 프로그램 구조의 기본 흐름

  1. 변수 정의
    • 데이터를 저장할 메모리 공간 마련
  2. 알고리즘 표현
    • 변수 값을 읽고, 변경하며 문제 해결
  3. 결과 도출
    • 최종 결과를 사용자에게 출력

2. 알고리즘이란?

  • 정의: 문제를 해결하기 위한 논리적 절차, 일처리 순서
  • 형태: 의사코드(Pseudo code) 형태로 작성
  • 조건:
    • 입력이 있어야 함
    • 출력이 있어야 함
    • 유한하게 종료되어야 함
    • 각 단계가 명확해야 함
    • 명확하고 실용적이어야 함
    • 다양한 입력에 일반적으로 적용 가능해야 함

3. 알고리즘 평가 기준

  • 메모리 사용량: 적게 쓸수록 좋음
  • 처리 속도: 빠를수록 좋음
    ※ 두 항목은 서로 트레이드오프 관계

4. 실습을 위한 문법 팁

  • 반복 제어 변수를 사용하지 않을 때는 언더바(_) 사용
for _ in range(5):
    print("반복")
  • Symbolic Constant (의미 있는 상수):
    • 상수 값을 변수처럼 정의
    • 대문자로 작성하여 일반 변수와 구분
MAX_SCORE = 100
  • 프로그램은 유지보수가 쉬워야 하며, 변경이 용이하도록 구성
  • 입력값 오류 처리는 필수
    • 예: 값의 범위, 형식 체크

5. 문제 풀이 단계

  1. 문제 분석 단계 (What)
    • 입력: 무엇을 입력받는가?
    • 조건: 어떤 제약이 있는가?
    • 출력: 무엇을 출력해야 하는가?
  2. 알고리즘 설계 단계 (How - 개략)
    • 해결 방법을 단계별로 구상
    • 흐름도, 의사코드 등으로 표현
  3. 구현 단계 (How - 구체)
    • 파이썬 문법을 이용하여 코딩

6. 실습 예제


📌 문제 1

10개의 정수를 입력받아 최대값과 최소값 출력

알고리즘

  1. max, min 변수 정의
  2. 10회 반복
    • 정수 입력
    • 입력된 값으로 max, min 갱신
  3. 최대값과 최소값 출력
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 사이

알고리즘

  1. total 변수 정의
  2. 5회 반복
    • 점수 입력
    • 유효성 검사 (0~100)
    • 총점 누적
  3. 평균 계산
  4. 총점과 평균 출력
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이면 종료

알고리즘

  1. 변수 정의 (pos, neg, even, odd)
  2. 반복 (종료 조건: -9999)
    • 정수 입력
    • 입력이 0이면 오류 처리
    • 양수/음수 판별
    • 양수일 경우 짝수/홀수도 판별
  3. 결과 출력
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)의 다양한 기능을 배웁니다.