문제들이 많이 어려웠다. 코딩적 사고와 차근차근 단계별로 어떤 결과가 나올지 생각하면서 풀어보는 습관이 필요하겠다. 그리고 단계마다 print()도 확인해보면서 검증 과정도 필요하겠다. 빨리 풀고싶은 마음보다는 느리더라도 정확하게 푸는 연습이 필요한 것 같다.
📌 복습 겸 문제풀이 기록하기
A. 함수 없이 풀이 (문제 1 - 5)
문제1 - 두 수의 기본 연산과 큰 수 판별

a, b = map(int, input("두 정수를 입력하세요.: ").split())
print(f'합 : {a+b}')
print(f'차 : {a-b}')
print(f'곱 : {a*b}')
if a > b:
print("큰 수:", a)
elif a < b:
print("큰 수:", b)
else:
print("큰 수: 같음")
➡️ 함수를 사용한 풀이 방법은? 함수는 입출력을 담아놓은 바구니 라고 생각하면 된다.
def test(a_func, b_func):
print(f"합 : {a_func + b_func}")
print(f"차 : {a_func - b_func}")
print(f"곱 : {a_func * b_func}")
if a_func > b_func:
print(f"큰 수 : {a_func}")
elif a_func < b_func:
print(f"큰 수 : {b_func}")
else:
print(f"두 수 같음")
a, b = map(int, input('정수 2개 입력: ").split())
test(a, b)
문제2 - 인사와 이름 반복 출력(반복문)

name = input("이름을 입력하세요: ")
n = int(input("정수 입력: "))
print(f'안녕하세요, {name}!')
for i in range(1, n+1)
print(f'{n}){name}') # <-- 마지막 출렵부분 헷깔렸음
➡️ 함수 사용 방법 🚨
def test(name_f, n_f):
for i range(1, n_f+1):
print(f'{n_f}){name_f}')
return " " # return이 없으면 "NONE"반환되기 때문에 넣어줌
name = input("이름 입력: ")
n = int(input("정수 입력: "))
print(f'안녕하세요, {name}')
result = test(name, n)
print(result)
> 입력: 스피또 3
> 출력: 안녕하세요, 스피또! 1) 스피또 2) 스피또 3) 스피또 OK
문제3 - 한 단어 정보(문자열)

word = input()
print(f'길이: {len(word)}')
print(f'첫 글자: {word[0]}')
print(f'마지막 글자: {word[-1]}')
print(f'대문자: {word.upper()}')
print(f'소문자: {word.lower()}')
➡️ 함수 사용 방법 🚨
def wordTranslater(word_trans):
word_len = len(word_trans)
word_first = word_trans[0]
word_last = word_trans[-1]
word_upper = word_trans.upper()
word_lower = word_trans.lower()
return word_len, word_first, word_last, word_upper, word_lower
word = input()
word_len, word_first, word_last, word_upper, word_lower = wordTranslater(word)
print(f'길이: {word_len}')
print(f'첫 글자: {word_first}')
print(f'마지막 글자: {word_last}')
print(f'대문자: {word_upper}')
print(f'소문자: {word_lower}')
문제4 - 정수 목록 요약(리스트)

a = list(map(int, input().split()))
a_len = len(a)
a_sum = sum(a)
a_mean = sum(a)/len(a)
a_min = min(a)
a_max = max(a)
print(f'개수: {a_len}')
print(f'합계: {a_sum}')
print(f'평균: {a_mean}')
print(f'최솟값: {a_min}')
print(f'최댓값: {a_max}')
➡️ 함수 사용 방법 🚨
def stats(a_func):
a_len = len(a_func)
a_sum = sum(a_func)
a_mean = sum(a_func)/len(a_func)
a_min = min(a_func)
a_max = max(a_func)
return a_len, a_sum, a_mean, a_min, a_max
a = list(map(int, input().split()))
a_len, a_sum, a_mean, a_min, a_max = stats(a)
print(a_len, a_sum, a_mean, a_min, a_max)
문제5 - 좌표와 원점 거리(튜플) 🚨

x, y = map(float, input("실수 2개 입력: ")
p = (x, y)
distance = (x**2 + y**2) ** 0.5
print(f'p: {p}')
print(f'원점까지 거리: {distance:.2f}')
if x == 0 or y== 0:
print("사분면: 축")
elif x > 0 and y > 0:
print("제 1 사분면")
elif x < 0 and y > 0:
print("제 2 사분면")
elif x < 0 and y < 0:
print("제 3 사분면")
else:
print("제 4 사분면")
B. 함수를 사용해 풀기 (문제6 - 10)
문제6 - 1부터 n까지의 합(함수 사용 필수)

🔍 (n: int) -> int: 에 대한 설명
더보기
| 구문 | 의미 | 역할 |
| n: int | 매개변수 타입 힌트 | 인자로 정수를 기대함 |
| -> int | 반환값 타입 힌트 | 함수 결과가 정수일 것으로 예상 |
| 실행 시 영향 | ❌ 없음 | 오직 가독성 & 타입 검사 도구용 |
def sum_to_n(n: int) -> int:
total = 0
for i in range(1, n+1):
total += i
return total
n = int(input().strip())
print(sum_to_n(n))
문제7 - 문자 개수 세기

def count_char(s: str, ch: str) -> int:
count = 0
for c in s:
if c == ch:
count += 1
return count
s = input()
ch = input()
print(count_char(s, ch))
문제8 - 짝수만 고르기 🚨

def filter_even(nums: list[int]) -> list[int]:
even_list = []
for num in nums:
# 뽑은 num이 짝수면
if num % 2 == 0:
even_list.append(num)
even_list.sort()
return even_list
nums = list(map(int, input().split()))
result_list = filter_even(nums)
print(result_list)
문제9 - 값 교환(튜플 반환)

def swap(a, b) -> tuple[str, str]:
return (b, a)
a, b = input.split()
result = swap(a, b)
print(result)
문제10 - 이름과 점수로 딕셔너리 만들기 🚨

def build_grade_dict(names_line: str, scores_line: str) -> dict[str, int]:
names = [x for x in names_line.split(',')]
scores = [int(x) for x in scores_line.split(',')]
# 문제에서 항목 수가 같다고 가정
result = {}
for i in range(len(names)):
result[names[i]] = scores[i]
return result
names_line = input().strip()
scores_line = input().strip()
d = build_grade_dict(names_line, scores_line)
print(d)
print(f"학생 수: {len(d)}")
avg = sum(d.values()) / len(d)
print(f"평균: {avg:.1f}")
💡 딕셔너리의 인덱싱을 활용해서 빈 딕셔너리 result에 채운다. → result[names[i]] = scores[i]
'Python' 카테고리의 다른 글
| [Python/세션] 파이썬 라이브 코딩 - 1회차 (0) | 2025.10.05 |
|---|---|
| [Python/복습] 0930 - 파이썬 함수 | 실습문제 & 미니과제 정리 노트 (0) | 2025.09.30 |
| [Python/복습] 0929 - 파이썬 딕셔너리 | 실습문제 & 미니과제 정리 노트 (0) | 2025.09.29 |