학습 날짜: 2025-07-22
이 날은 지금까지 배운 Python 문법에 대한 테스트를 보았다. 거의 하루 동안 Easy 17문제, Intermediate 8문제, Hard 10문제를 풀었다.
총 25문제 모두를 완주했다.
Intermediate 단계에서는 몇몇 문제에서 잠깐씩 고민이 필요했고, Hard 단계는 문제 하나하나 푸는 데 시간이 좀 걸렸지만 혼자 해결할 수 있는 수준이었다.
강사님께서는 Easy 문제는 쓱 보고 풀이 방향이 바로 떠오르면, Intermediate 단계부터 푸는 걸 추천하셨다.
하지만 나는 아직 나의 코딩 속도가 느리다고 느꼈고, 속도를 높이기 위해 Easy 단계부터 모든 문제를 빠짐없이 풀어보았다.
그중에서 재미있었던 문제, 조금 애먹었던 문제, 기억에 남는 문제 등을 아래에 정리해보려 한다.
Intermediate grade
5. 숫자 맞추기 게임 (랜덤 숫자, 기회 제한)
import random
ran_num = random.randint(1, 20)
chance = 5
while True:
num = int(input("Guess a number, 1~20: "))
chance -= 1
if chance != 0:
if ran_num == num:
print(f"Good job!!")
break
elif ran_num > num:
print(f"up!, try again, you have {chance} chance.")
elif ran_num < num:
print(f"down!, try again, you have {chance} chance.")
else:
print("you have no chance")
break

6. 단어 출현 빈도수 분석기
- 문장을 입력받아 각 단어의 출현 빈도를 딕셔너리로 정리하고,
- 가장 많이 나온 단어를 함께 출력하는 프로그램을 작성하세요.
sen = input("Enter a sentence: ").split()
sen_dict = dict.fromkeys(sen)
for i in sen_dict:
sen_dict[i] = sen.count(i)
print(f"가장 많이 나온 단어:{max(sen_dict,key=sen_dict.get)}")

Hard grade
2. 할 일 관리 프로그램 (To-do 리스트 CLI)
- 사용자가 해야 할 일을 등록, 삭제, 목록 확인할 수 있는 CLI 인터페이스 구현
# CLI: 텍스트 기반의 사용자 인터페이스. 파이썬도 CLI임!
- 기능:
- 1: 할 일 등록
- 2: 할 일 삭제
- 3: 할 일 목록 출력
- 0: 종료 - 구현 조건:
- 리스트로 관리
- 번호별 메뉴 제공
- 반복문 흐름 필요
todoList = []
while True:
print("1: 할 일 등록""\n""2: 할 일 삭제""\n""3: 할 일 목록 출력""\n""0: 종료")
menu = int(input("무엇을 하시겠습니까?: "))
if menu == 1:
todo = input("할 일을 입력하세요: ")
todoList.append(todo)
elif menu == 2:
for i in range(len(todoList)):
print(f"{i+1}. {todoList[i]}")
rm_todo = int(input("어떤 일을 삭제하시나요? "))
todoList.pop(rm_todo)
elif menu == 3:
print("To-do List")
for i in range(len(todoList)):
print(f"{i+1}. {todoList[i]}")
elif menu == 0:
break
else:
print("잘못 입력하셨습니다.")

7. 텍스트 압축 프로그램 (Run Length Encoding)
- 입력 문자열에서 연속된 문자 수를 압축하여 표현 (예: aabbbcc → a2b3c2)
- 조건:
- 반복문과 조건문으로 구현
- 압축 해제도 구현할 것 (a2b3 → aabbb)
text = input("Enter some alphabet: ")
def zip_text(text):
zipped = ""
temp_text = sorted(set(text))
for m in temp_text:
zipped = zipped + m + str(text.count(m))
return zipped
def unzip_text(text):
unzipped = ""
for i in range(len(text)):
if (i % 2) == 0:
unzipped = unzipped + text[i]*(int(text[i+1]))
return unzipped
zText = zip_text(text)
unText = unzip_text(zText)
print(f"입력된 문자: {text}, 압축된 문자: {zText}, 압축 해제된 문자: {unText}")

9. (pass)문자열 암호화 프로그램 (간단한 Caesar Cipher)
- 사용자로부터 문자열을 입력받아, 알파벳을 오른쪽으로 N칸 밀어 암호화된 문자열을 출력
- 조건:
- 대소문자 구분 유지
- 숫자, 특수문자는 그대로 유지
- 복호화도 가능하게 옵션 제공
import random
def enco():
pw = input("Enter the password: ")
n = random.randint(1,5)
f_text = ''.join(random.choices(pw, k=n))
enco_pw = f_text + pw
return enco_pw, n
def deco(text, n):
deco_pw = text[n:]
return deco_pw
while True:
menu = int(input("1.암호화, 2. 복호화, 3. 종료: "))
if menu == 1:
enco_pw, n = enco()
print(f"암호화된 password: {enco_pw}")
elif menu == 2:
print(f"복호화된 password: {deco(enco_pw, n)}")
elif menu == 3:
break
else:
print("잘못 입력하셨습니다.")

'LG U+ Why Not SW Camp 8기 > 학습 로그' 카테고리의 다른 글
| 공부 일지 #10 | Python Utility (3) | 2025.07.30 |
|---|---|
| 공부 일지 #9 | Python Class 기초 정리 (3) | 2025.07.25 |
| 공부 일지 #7 | mini-project; 가계부 만들기 (1) | 2025.07.22 |
| 공부 일지 #6 | Python 실습 (2) | 2025.07.18 |
| 공부 일지 #5 | Python의 동작 원리: 메모리 구조부터 NS-Chart까지 (2) | 2025.07.15 |