본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1226번 : 이번 주 로또

by 빛밤하늘 2021. 8. 30.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

이번 주 로또

 로또 규칙에 대한 이해가 부족한 경우 인터넷 검색을 통해 알아보시기 바랍니다.

codeup.kr

 

 

 

주의해야 할 점

1. rstrip, split을 사용하는 입력 방식

입력값들을 하나하나 int형이나 float형으로 변경할 필요가 없을 때는

readline으로 입력할 때 맨 끝에 들어오는 '\n'을 rstrip을 이용해 떼어줘야 하는 것을 잊으시면 안 됩니다.

그리고 문자열의 split 메서드의 반환형은 리스트이므로 map 내장 함수를 사용할 때와는 다르게 

굳이 list를 사용해서 다시 묶어줄 필요는 없습니다.

lotto_nums = sys.stdin.readline().rstrip().split()

 

예제 설명

1. 첫 번째 예제

- 입력

13 23 24 35 40 45 7
2 6 7 23 40 44

 

- 출력

0

 

- 설명

입력한 로또 당첨 번호 6개는 13, 23, 24, 35, 40, 45이고, 보너스 번호는 7입니다.

지혜가 가지고 있는 로또 번호는 2, 6, 7, 23, 40, 44입니다.

지혜가 가지고 있는 로또 번호 중 당첨 번호와 일치하는 번호는 23, 40이므로 2개와 일치하며,

보너스 번호 7도 일치합니다.

 

하지만, 로또 당첨 번호와 일치하는 게 2개라서, 보너스 번호의 일치 여부는 필요없으므로

결과는 꽝입니다. 따라서 0을 출력합니다.

 

생각한 풀이 과정

로또 당첨 번호 6개오 보너스 번호 1개를 입력합니다.

지혜가 가지고 있는 로또 번호 6개를 입력합니다.

지혜의 번호와 로또 당첨 번호가 일치하는 개수를 저장할 변수를 선언합니다.

지혜의 번호 중 보너스 번호가 있는지의 여부를 저장할 변수를 선언합니다.

 

지혜가 가지고 있는 로또 번호 6개를 하나씩 반복해서 로또 당첨 번호 6개에 속하는지 판단합니다.

속한다면, 당첨 번호를 맞춘 개수에 1을 더해줍니다.

반복문이 끝나고, 지혜의 번호 중 보너스 번호가 있는지의 여부를 판단합니다.

 

지혜의 번호 6개가 모두 로또 당첨 번호 6개와 일치한다면, 1등이므로 1을 출력합니다.

지혜의 번호 6개 중 로또 당첨 번호 5개와 일치하고, 보너스 번호도 있다면, 2등이므로 2를 출력합니다.

지혜의 번호 6개 중 로또 당첨 번호 5개와 일치한다면, 3등이므로 3을 출력합니다.

지혜의 번호 6개 중 로또 당첨 번호 4개와 일치한다면, 4등이므로 4를 출력합니다.

지혜의 번호 6개 중 로또 당첨 번호 2개와 일치한다면, 5등이므로 5를 출력합니다.

그 외의 경우인 지혜의 번호 6개 중 로또 당첨 번호 2개 이하로 일치한다면, 꽝이므로 0을 출력합니다.

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 로또 당첨 번호 6개와 보너스 번호 1개를 공백으로 구분해 입력합니다.
# 맨 끝의 \n은 떼어줍니다.
# 총 번호 7개를 리스트에 넣어줍니다.
lotto_nums = stdin.readline().rstrip().split()
# 지혜가 가지고 있는 로또 번호 6개를 공백으로 구분해 입력합니다.
# 맨 끝의 \n은 떼어줍니다.
# 번호 6개를 리스트에 넣어줍니다.
jihye_nums = stdin.readline().rstrip().split()
# 로또 당첨 번호 6개를 따로 리스트 변수로 만들어줍니다.
winning_nums = lotto_nums[:6]
# 보너스 번호를 저장하는 변수를 선언합니다.
bonus_num = lotto_nums[-1]
# 지혜가 가지고 있는 로또 번호 중 당첨 번호와 일치하는 번호의 개수를 저장할 변수를 선언합니다.
# 0으로 초기화합니다.
winning_num_cnt = 0
# 지혜가 가지고 있는 로또 번호 중 보너스 번호가 있는지 여부를 저장할 변수를 선언합니다.
# 처음에는 보너스 번호가 업다는 뜻인 False로 초기화합니다.
bonused = False

# 지혜가 가지고 있는 로또 번호를 하나씩 반복해봅니다.
for jihye_num in jihye_nums:
    # 현재 지혜의 로또 번호가 로또 당첨 번호에 속한다면
    if jihye_num in winning_nums:
        # 당첨 번호의 개수에 1을 더해줍니다.
        winning_num_cnt += 1

# 보너스 번호가 지혜가 가지고 있는 번호 중에 있다면
if bonus_num in jihye_nums:
    # bonused 변수의 값을 보너스 번호가 있다는 뜻인 True로 변경하빈다.
    bonused = True

# 지혜의 로또 번호들이 당첨 번호와 6개 모두 일치한다면
if winning_num_cnt == 6:
    # 1등을 의미하는 1을 출력합니다.
    print(1)
# 지혜의 로또 번호들이 당첨 번호와 5개와 일치하고 보너스 번호를 맞췄다면
elif winning_num_cnt == 5 and bonused:
    # 2등을 의미하는 2를 출력합니다.
    print(2)
# 지혜의 로또 번호들이 당첨 번호와 5개와 일치한다면
elif winning_num_cnt == 5:
    # 3등을 의미하는 3을 출력합니다.
    print(3)
# 지혜의 로또 번호들이 당첨 번호와 4개와 일치한다면
elif winning_num_cnt == 4:
    # 4등을 의미하는 4를 출력합니다.
    print(4)
# 지혜의 로또 번호들이 당첨 번호와 3개와 일치한다면
elif winning_num_cnt == 3:
    # 5등을 의미하는 5를 출력합니다.
    print(5)
# 그 외의 경우인 지혜의 로또 번호들이 당첨 번호와 2개 이하로 일치한다면
else:
    # 꽝을 의미하는 0을 출력합니다.
    print(0)

 

제출 결과

CodeUp 1226번 : 이번 주 로또에서 코드 제출 결과
CodeUp 1226번 : 이번 주 로또에서 코드 제출 결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글