hye-log

[프로그래머스]로또의 최고 순위와 최저 순위(Python) 본문

CodingTest/Programmers

[프로그래머스]로또의 최고 순위와 최저 순위(Python)

iihye_ 2022. 7. 8. 14:09

0. 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

1) 구매한 번호에서 당첨 개수, 알아볼 수 없는 번호(0) 개수 찾기

2) 가능한 최고 등수, 최저 등수 반환하기

 

2. 입출력

# input
lottos = [44, 1, 0, 0, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]

# output
result = [3, 5]

 

3. 코드

1) 첫 번째 코드

def solution(lottos, win_nums):
    # lottos : 구매한 번호
    # win_nums : 당첨 번호

    answer = []

    ranking = [6, 6, 5, 4, 3, 2, 1]                 # ranking : 맞춘 개수 별 등수

    # 정렬 후 0 개수 찾기 & 정답 개수 찾기
    lottos.sort(reverse=False)                      # 구매한 번호 내림차순 정렬
    count_zero = lottos.count(0)                    # 0 개수
    count_win = len(set(lottos) & set(win_nums))     # 정답 개수(교집합 원소의 개수)

    # 최고, 최저 등수 반환
    answer.append(ranking[count_win+count_zero])    # 최고 등수
    answer.append(ranking[count_win])               # 최저 등수

    return answer

 

2) 실행 결과

 

4. 알게된 점

1) 리스트 오름차순, 내림차순 정렬(sort)

# 리스트의 정렬
list = [1, 3, 2, 5, 4]

list.sort() 			# [1, 2, 3, 4, 5]
list.sort(reverse=False)	# [1, 2, 3, 4, 5]
list.sort(reverse=True)		# [5, 4, 3, 2, 1]

2) 두 리스트에서 같은 원소를 찾을 때(set)

# 리스트의 집합화
list1 = [1, 2, 3, 4, 5]
list2 = [1, 3, 5, 7, 9]

set1 = set(list1)		# {1, 2, 3, 4, 5}
set2 = set(list2)		# {1, 3, 5, 7, 9}

print(set1 & set2)		# 교집합 : {1, 3, 5}
print(set1 | set2)		# 합집합 : {1, 2, 3, 4, 5, 7, 9}

 

5. Github 링크

https://github.com/iihye/Algorithm/blob/main/Programmers/lotto_ranking.py

 

GitHub - iihye/Algorithm

Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

728x90
Comments