1. 문제와 문제 조건 파악하기
로또 관련 문제에 사용되는 코딩 문법은 배열(리스트 등)을 기본으로 합니다. 먼저, 길이 6인 정수 배열을 만들어, 문제 조건에 맞는 함수에 넣었을 때, 결과를 출력하는 방식으로 문제가 출제됩니다. 여기에서는 다음과 같은 문제의 답을 찾아가는 코딩을 해보겠습니다.
문제:
길이가 6인 정수 배열을 입력받아서 당첨결과를 반환하는 프로그램을 만들어라. 1등 기준은 랜덤으로 생성된 6개의 번호이며, 당첨 결과는 1등부터 6등까지 당첨된 횟수를 리스트로 반환 한다.
조건:
- 로또 당첨 결과의 비교는 1등 번호와 입력한 번호의 순서에 상관없이 동일하다.
- 함수의 결과는 길이가 7인 리스트로 마지막 숫자의 의미는 1등이 나오기까지 시도한 총횟수이다.
2. 랜덤 함수 _ import random
앞에서 언급한 문제를 해결하기 위해 유용한 함수를 소개합니다. 이 랜덤 함수를 사용하기 위해서 "import random" 코드를 입력해야 합니다. 이 함수를 기본으로 로또 1등 번호의 배열을 생성하겠습니다. 그전에 랜덤 함수 모듈에서 기본적으로 사용되는 코드를 알아봅시다.
코드 1 _ random.random()
; 0과 1 사이의 랜덤 한 실수(float) 데이터를 반환하는 코드입니다.
코드 2 _ random.uniform(a,b)
; a와 b는 변수이며, a와 b사이의 실수(float) 데이터를 반환하는 코드입니다.
(a≤ float ≤ b)
코드 3 _random.randint(a, b)
; a와 b는 변수이며, a와 b사이의 정수(int)를 반환하는 코드입니다.
(a≤ int ≤ b)
이외에도 더 많지만, 코드 3번이 해당 문제를 풀기에 적합하므로 여기까지만 알아보기로 합시다.
3. 문제 풀어보기
문제를 해결하기 위해 제시한 예시 코드는 다음과 같습니다.
def Lottos(L):
T,c_1,c_2,c_3,c_4,c_5,c_6= 0,0,0,0,0,0,0
L.sort()
while c_1 == 0:
num=0
Temp=[random.randint(1,45),random.randint(1,45),random.randint(1,45),random.randint(1,45),random.randint(1,45),random.randint(1,45)]
Temp.sort()
if Temp[0] == L[0]:
num+=1
if Temp[1] == L[1]:
num+=1
if Temp[2] == L[2]:
num+=1
if Temp[3] == L[3]:
num+=1
if Temp[4] == L[4]:
num+=1
if Temp[5] == L[5]:
num+=1
if num == 6:
c_1 +=1
if num == 5:
c_2 +=1
if num == 4:
c_3 +=1
if num == 3:
c_4 +=1
if num == 2:
c_5 +=1
if num < 2:
c_6 +=1
T+=1
Ans=[c_1,c_2,c_3,c_4,c_5,c_6,T]
return Ans
L=[1,2,3,4,5,6]
Lottos(L)
코드 결과:
여담이지만, 현재 시점으로 로또 회차가 996회이니까
앞으로 1,2,3,4,5,6 번호가 당첨이 되려면 아직 한참 멀었군요.. ㅋㅋ
'COMPUTER SCIENCE > Coding Test' 카테고리의 다른 글
DFS 및 BFS 기본 응용 문제 _ 방문 순서 출력 (0) | 2022.01.21 |
---|---|
코딩 테스트 준비 문제[리스트 스택/큐] _ python3 (0) | 2022.01.17 |
코딩 테스트 준비 문제 [사칙 연산 문제] _ Python3 (0) | 2022.01.10 |
코딩 테스트 준비 문제 [약수 문제] _ Python3 (0) | 2022.01.10 |
코딩 테스트 준비 문제 [문자열 처리 문제] _ Python3 (0) | 2022.01.08 |