문제 1: 랜덤으로 쿠폰 당첨 프로그램 만들기
#당첨자 뽑기
#1명은 치킨쿠폰, 3명은 커피쿠폰
#20명 중 무작위 추첨, 중복 허용하지 않음.
#random모듈: shuffle(), sample()함수 활용.
from random import *
#20명의 이름(편의 상 1번부터 20번으로 이름 입력)
user = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
shuffle(user) # user의 리스트를 랜덤으로 섞는 함수 (shuffle)
chickenCoupon = sample(user, 1) #user 리스트 중 랜덤으로 1명 추첨하는 함수 (sample)
#중복을 허용하지 않는 조건으로 추첨된 사람은 리스트에서 제외하기 위해 작성.
setUser = set(user) #setUser 변수를 생성하여 user 리스트를 세트로 변환 후 변수에 저장.
chickenCoupon = set(chickenCoupon) #치킨 쿠폰 변수를 세트로 자료구조 변환.
print("user 리스트: "+str(setUser))
#setUser에서 chickenCoupen 변수 값에 담긴 값 제외 후 user 리스트로 변환.
setUser = setUser - chickenCoupon #중복 당첨이 되지 못하게 하기 위한 코드.
user = list(setUser) #치킨 쿠폰 당첨된 사람을 제외한 리스트.
coffeeCoupon = sample(user, 3) #user 리스트 중 랜덤으로 3명 추첨하는 함수
print("치킨쿠폰 당첨자 제외한 user 리스트:" +str(user))
print("-- 당첨자 발표 --")
print("치킨 당첨자 : " + str(chickenCoupon))
print("커피 당첨자 : " + str(coffeeCoupon))
print("-- 축하합니다! --")
이제 다시 생각해보니 shuffle함수를 이용하여 랜덤으로 섞였으니 슬라이싱으로 했으면 조금 더 간단한 코드가 나왔을 것 같다. 파이썬에 대해 익숙하지 않다보니 아쉬움이 남는다. 다른 코드로도 연습 해봐야겠다.
2번 문제
#2번 문제
#수강신청시스템 중 중복 과목 없애는 프로그램 만들기
#1. 리스트로 관리
#2. 리스트에서 같은 과목이 2번 이상 포함된 경우 1개만 남기고 나머지 삭제.
#3. 출력 시 신청 과목 순서는 변경해도 괜찮다.
subject = ["자료구조", "알고리즘", "자료구조", "운영체제"]
setSubject = set(subject)
subject = list(setSubject)
print(subject)
문제 1번과 다르게 문제 2번은 수월하게 풀었다.
문제 풀이는 subject 변수에서 중복된 과목을 set로 변환하여 없애고 다시 list로 변환하여 출력하게 하였다.
오늘은 5장을 끝으로 1번 문제를 다른 방법으로 풀어보고 쉬도록 해야겠다.
'파이썬' 카테고리의 다른 글
[파이썬] 8장 문제 풀이 (1) | 2023.12.23 |
---|---|
[파이썬] 7장 문제풀이(함수) (0) | 2023.12.21 |
[파이썬] 6장 문제 풀이 (제어문) (1) | 2023.12.20 |
[파이썬] 23.12.19 4장 문제풀이 (0) | 2023.12.19 |
[파이썬] 23.12.18 문제 풀이 (0) | 2023.12.18 |