[오늘의 문제] 파이썬

shlim55·2025년 11월 3일

코딩테스트

목록 보기
166/223

맛보기 문제

다음 조건을 만족하는 코드를 작성하세요.

  • 좋아하는 과일 5개를 담은 리스트 fruits를 만드세요.
  • 첫 번째 과일과 마지막 과일을 출력하세요
  • 두 번째부터 네 번째까지의 과일을 슬라이싱으로 출력하세요

내가 작성한 코드문

fruits = ["apple", "banana", "grape", "peach", "orange"]

print(fruits[0])
print(fruits[4])
print(fruits[1:4])

fruits = ["apple", "banana", "grape", "peach", "orange"]

print(fruits[0])
print(fruits[4])
print(fruits[1:4])

1. 학생 성적 조회하기

문제 설명:

5명의 학생 성적이 리스트로 주어집니다. 첫 번째 학생과 마지막 학생의 성적을 출력하고, 2번째부터 4번째 학생까지의 성적을 슬라이싱으로 출력하세요.

입력 예시:

입력 없음

출력 예시:

첫 번째 학생 성적: 85점
마지막 학생 성적: 88점
2~4번째 학생 성적: [90, 78, 92]

내가 작성한 코드문

scores = [85, 90, 78, 92, 88]
print("첫 번째 학생 성적: ", scores[0])
print("마지막 학생 성적: ", scores[len(scores)-1])
print("2~4번째 학생 성적: ", scores[1:4])

첫 번째 학생 성적: 85
마지막 학생 성적: 88
2~4번째 학생 성적: [90, 78, 92]

2. 할일 목록 관리

문제 설명:

빈 리스트를 만들고, 사용자로부터 할 일을 5개 입력받아 리스트에 추가하세요.
그 후 사용자에게 완료한 할 일의 번호(1부터 시작)를 입력받아 해당 항목을 삭제하고, 남은 할 일 목록과 개수를 출력하세요.

입력 예시:

빨래하기
설거지하기
공부하기
운동하기
청소하기
3

출력 예시:

전체 할 일: ['빨래하기', '설거지하기', '공부하기', '운동하기', '청소하기']
'공부하기'를 완료했습니다!
남은 할 일: ['빨래하기', '설거지하기', '운동하기', '청소하기']
남은 개수: 4개

내가 작성한 코드문

# 빈 리스트를 만드세요
works = []
# 할 일을 5개 입력 받고, 리스트에 추가하세요.
for i in range(0,5):
    work1 = input("할일 5개 입력하세요: ")
    works.append(work1)

# print("전체 할 일:", works)
print(f"전체 할일: {works}")
# 사용자에게 완료할 할 일의 번호를 입력받고, 번호 해당하는 할일을 삭제하세요.
number = int(input("할 일의 번호를 입력하세요: "))
# works.remove(works[number - 1])#pop(number)도 가능
print(f"{works.pop(number-1)}를 완료했습니다!")
# 남은 할 일의 목록과 개수를 출력하세요.
print("남은 할 일:", works, "남은 개수: ", len(works))

전체 할일: ['잠', '코딩', '게임', '자전거', '헬스']
코딩를 완료했습니다!
남은 할 일: ['잠', '게임', '자전거', '헬스'] 남은 개수: 4

다른 사람의 풀이
For문 없이 그냥 인풋5개 입력하면 됨
works.append(input("할일 5개 입력하세요: "))
이렇게 약식으로 해도 된다. 입력과 동시에 추가

print(f"전체 할일: {works}")
f-string 활용가능
Pop은 인덱스를 기준으로 지우지만 반환도 가능하다 그래서 pop 쓸것.

print(f"{works.pop(number-1)}를 완료했습니다!")
이렇게 하면 pop과 동시에 출력가능

print("남은 할 일:", works, "남은 개수: ", len(works)) # 이것도 f-string 사용가능
print(f"남은 할 일: {works}, 남은 개수: {len(works)}")

3. 주간 매출 분석

문제 설명:

일주일(월-일) 동안의 매출액이 리스트로 주어집니다. 평일(월금)과 주말(토~일)의 매출 합계를 각각 계산하여 출력하고, 평일 매출 합계와 주말 매출 합계의 차이를 출력하세요.

sum(리스트) 함수를 활용해보세요!

  • 숫자 원소로 이루어진 리스트의 총 합계를 구하는 함수

입력 예시:

입력없음

출력 예시:

평일 매출 합계: 700만원
주말 매출 합계: 410만원
평일 매출 - 주말 매출: 290만원

내가 작성한 코드문

abcd = [120, 150, 130, 140, 160, 200, 210]

# 매출 합계 계산과 출력

result = sum(abcd)
# print("평일 매출 합계: ", result,"만원")


# print(sum(list))
# 어느 쪽 매출이 더 높은지 출력하세요.
mon_sum = abcd[0:5]
weekend_sum = abcd[5:]
print("평일 매출 합계: ",sum(mon_sum),"만원")
print("주말 매출: ",sum(weekend_sum),"만원")
print("평일 매출 - 주말 매출: ",sum(mon_sum) - sum(weekend_sum),"만원")

평일 매출 합계: 700 만원
주말 매출: 410 만원
평일 매출 - 주말 매출: 290 만원

fstring 활용

print(f"평일 매출 합계: {sum(mon_sum)} 만원")
print(f"주말 매출: {sum(weekend_sum)} 만원")
print(f"평일 매출 - 주말 매출: {sum(mon_sum) - sum(weekend_sum)}만원")

4. 재고 관리 시스템

문제 설명:

창고의 상품 재고 리스트가 주어집니다. 다음 작업을 순서대로 수행하세요:

  1. "노트북" 2개를 추가
  2. 첫 번째로 나오는 "마우스"를 출고(삭제)
  3. 재고를 알파벳 순으로 정렬
  4. "키보드"의 재고가 몇 개인지 출력
  5. 최종 재고 리스트 출력

입력 예시:

입력없음

출력 예시:

키보드 재고: 3개
최종 재고: ['노트북', '노트북', '마우스', '모니터', '키보드', '키보드', '키보드']


내가 작성한 코드문

inventory = ["마우스", "키보드", "모니터", "마우스", "키보드", "키보드"]

inventory.append("노트북")
inventory.append("노트북")
inventory.remove("마우스")
inventory.sort()
inventory.count("키보드")
print(f"최종 재고: {inventory}")

최종 재고: ['노트북', '노트북', '마우스', '모니터', '키보드', '키보드', '키보드']

4-2. 중복 제거 프로그램

주어진 리스트에서 중복된 숫자를 제거하고 오름차순으로 정렬된 리스트를 만드세요.

  • 리스트를 (눈으로)확인해서 count()를 사용해 중복된 숫자와 개수 출력
  • 중복되는 값은 remove()로 제거(= 각 값이 한개만 남도록)
  • sort()로 오름차순 정렬
  • 최종 리스트 출력

출력 예시

중복 값: 5, 개수: 3
중복 값: 8, 개수: 2
중복 값: 2, 개수: 2
[1, 2, 3, 5, 8, 9]

내가 작성한 코드문

numbers = [5, 2, 8, 2, 9, 5, 3, 8, 1, 5]
print(f"중복 값: {numbers[0]} 개수 {numbers.count(numbers[0])}")
print(f"중복 값: {numbers[2]} 개수 {numbers.count(numbers[2])}")
print(f"중복 값: {numbers[1]} 개수 {numbers.count(numbers[1])}")

number1 = numbers[0]
number2 = numbers[1]
number3 = numbers[2]

numbers.remove(number1)
numbers.remove(number1)
numbers.remove(number2)
numbers.remove(number3)


numbers.sort()
print(numbers)

중복 값: 5 개수 3
중복 값: 8 개수 2
중복 값: 2 개수 2
[1, 2, 3, 5, 8, 9]

5. 리스트 활용

문제 설명:

아래 코드의 실행 결과는?

data = [1, 3, 4, 5]

data.append([6, 8, 10])
print(len(data))

내가 작성한 답안
[1, 3, 4, 5, [6, 8, 10]]
5

6. 학점 계산기

문제 설명:

사용자로부터 점수를 입력받아 학점을 출력하세요.

  • 90점 이상: A
  • 80점 이상 90점 미만: B
  • 70점 이상 80점 미만: C
  • 70점 미만: F

입력 예시:

85

출력 예시:

학점은 B입니다.

내가 작성한 코드문

num = int(input("점수를 입력하세요: "))

if num >= 90:
    print("학점은 A입니다.")
elif num >= 80:
    print("학점은 B입니다.")
elif num >= 70:
    print("학점은 C입니다.")
else:
    print("학점은 F입니다.")

7. 학생 성적 관리

문제 설명:

3명의 학생 정보가 중첩 리스트로 주어집니다. 각 학생은 [이름, 국어, 수학, 영어] 형태입니다.
각 학생의 평균을 계산하고, 각 학생의 이름과 평균을 출력하세요.

sum(리스트) 함수를 활용하세요!

  • 숫자 원소로 이루어진 리스트의 모든 원소의 총 합계를 구하는 함수

입력 예시:

입력없음

출력 예시:

김철수 84.33333333333333 
이영희 91.66666666666667
박민수 69.0

내가 작성한 코드문

students = [
    ["김철수", 85, 90, 78],
    ["이영희", 92, 88, 95],
    ["박민수", 70, 65, 72]
]

김철수 = [students[0][1], students[0][2], students[0][3]]
이영희 = [students[1][1], students[1][2], students[1][3]]
박민수 = [students[2][1], students[2][2], students[2][3]]
print(f"김철수 {sum(김철수) /len(김철수)}")
print(f"이영희 {sum(이영희) /len(이영희)}")
print(f"박민수 {sum(박민수) /len(박민수)}")

김철수 84.33333333333333
이영희 91.66666666666667
박민수 69.0

8. 로그인 시스템

문제 설명:

등록된 아이디와 비밀번호가 주어집니다. 사용자로부터 아이디와 비밀번호를 입력받아:

  • 둘 다 일치: "로그인 성공"
  • 아이디만 틀림: "존재하지 않는 아이디입니다"
  • 비밀번호만 틀림: "비밀번호가 틀렸습니다"
  • 둘 다 틀림: "아이디와 비밀번호를 확인하세요"

위 조건에 따라 출력하세요.

입력 예시:

user123
pass456

출력 예시:

비밀번호가 틀렸습니다

내가 작성한 코드문

correct_id = "user123"
correct_pw = "pass456"
id = input("아이디를 입력하세요: ")
pw = input("비밀번호를 입력하세요: ")
if correct_id == id and correct_pw == pw:
    print("로그인 성공")
elif correct_id == id and correct_pw != pw:
    print("비밀번호만 틀림: 비밀번호가 틀렸습니다")
elif correct_id != id and correct_pw == pw:
    print("아이디만 틀림: 존재하지 않는 아이디입니다")
else:
    print("둘 다 틀림: 아이디와 비밀번호를 확인하세요")

9. 택배 요금 계산기

문제 설명:

물건의 무게(kg)와 배송 지역(서울/지방/제주)을 입력받아 배송비를 계산하세요.

  • 서울: 3kg 이하 3000원, 3kg 초과 시 1kg당 1000원 추가
  • 지방: 3kg 이하 4000원, 3kg 초과 시 1kg당 1500원 추가
  • 제주: 3kg 이하 5000원, 3kg 초과 시 1kg당 2000원 추가

입력 예시:

5
지방

출력 예시:

배송 지역: 지방
무게: 5kg
배송비: 7000원

(설명: 기본 4000원에 초과 2kg에 의한 추가 3000원)

내가 작성한 코드문

kg = int(input("kg을 입력하세요.: "))
area = input("지역을 입력하세요: ")
money = 0
if area == "서울" and kg <= 3:
    money = 3000
elif area == "서울" and kg > 3:
    money = 3000 + (1000 * (kg - 3))

if area == "지방" and kg <= 3:
    money = 4000
elif area == "지방" and kg > 3:
    money = 4000 + (1500 * (kg - 3))    

if area == "제주" and kg <= 3:
    money = 5000
elif area == "제주" and kg > 3:
    money = 5000 + (2000 * (kg - 3))   
print(f"배송 지역: {area}")
print(f"무게: {kg}kg")
print(f"배송비: {money}원")

다른사람의 풀이

이것도 방법은 아주 다양하다 함
지역에 따른
Base_fee extra_fee 변수를 지정하는 방법도 있다고 함.

print("배송 지역: ", area)
print("무게: ", kg,"kg")
print("배송비: ", money,"원")
이것도 f-string 써보기

10. 혈압 판정 시스템

문제 설명:

사용자로부터 수축기 혈압과 이완기 혈압을 입력받아 상태를 판정하세요.

  • 수축기 120 미만 AND 이완기 80 미만: "정상"
  • 수축기 120~129 AND 이완기 80 미만: "주의"
  • 수축기 130~139 OR 이완기 80~89: "고혈압 전단계"
  • 수축기 140 이상 OR 이완기 90 이상: "고혈압"

입력 예시:

135
85

출력 예시:

수축기: 135mmHg 이완기: 85mmHg
판정: 고혈압 전단계

내가 작성한 코드문

machine = int(input("수축기: "))
bp = int(input("이완기: "))

if machine < 120 and bp < 80:
    print("수축기: ", machine, "이완기: ", bp)
    print("판정: 정상")
elif machine >=120 and machine <= 129 and bp < 80:
    print(f"수축기: {machine}mmHg 이완기: {bp}mmHg")
    print("판정: 주의")    # 120~129 AND 이완기 80 미만: "주의"
elif machine >=130 and machine <= 139 and (bp >= 80 and bp <=89):
    print(f"수축기: {machine} 이완기: {bp}")
    print("판정: 고혈압 전단계")    # 130~139 OR 이완기 80~89: "고혈압 전단계"
elif machine >=140 and (bp >= 90):
    print(f"수축기: {machine} 이완기: {bp}")
    print("판정: 고혈압")    # 수축기 140 이상 OR 이완기 90 이상: "고혈압"

종합 실습 문제

학생 관리 프로그램

students 리스트를 바탕으로 아래와 같은 지시사항을 따르세요.
(값은 자유롭게 설정)

  1. 학생 3명의 이름을 추가 (또는 그 이상)
  2. 두 번째 위치에 전학생 추가
  3. 학생 이름을 알파벳 순으로 정렬
  4. 특정 학생이 몇 번째에 있는지 찾기
  5. 전학 가는 학생 한명을 정해서 제거
  6. 조건문으로 학생 수 확인:
  • 5명 이상: "반이 꽉 찼습니다"
  • 3~4명: "적정 인원입니다"
  • 2명 이하: "학생이 부족합니다"
students = []
# 1. 학생 3명의 이름을 추가 (또는 그 이상)
student1 = input("학생을 입력하세요.")
students.append(student1)
student2 = input("학생을 입력하세요.")
students.append(student2)
student3 = input("학생을 입력하세요.")
students.append(student3)
print(f"세명의 학생 {students}")
# 2. 두 번째 위치에 전학생 추가
student4 = input("전학생을 입력하세요.")
students.insert(1, student4)

# 3. 학생 이름을 알파벳 순으로 정렬
students.sort()

# 4. 특정 학생이 몇 번째에 있는지 찾기
students5 = input("특정 학생이 몇 번째에 있는지: ")
print(f"{students.index(students5) + 1}번째")

# 5. 전학 가는 학생 한명을 정해서 제거
students6 = input("전학 가는 학생 한명을 정하기: ")
students.remove(students6)

# 6. 조건문으로 학생 수 확인:
#   - 5명 이상: "반이 꽉 찼습니다"
#   - 3~4명: "적정 인원입니다"
#   - 2명 이하: "학생이 부족합니다"

if len(students) >= 5:
    print("반이 꽉 찼습니다")
elif len(students) <= 4 and len(students) >= 3:
    print("3~4명: 적정 인원입니다")
else:
    print("학생이 부족합니다")

print(students)

세명의 학생 ['강ㅇㅇ', '이ㅇㅇ', '임ㅇㅇ']
2 번째
3~4명: 적정 인원입니다
['강ㅇㅇ', '윤ㅇㅇ', '임ㅇㅇ']

profile
A Normal Programmer

0개의 댓글