사용 언어: python 3.9.5
https://programmers.co.kr/learn/courses/30/lessons/77484
지워진 숫자 있을 때 로또 순위 최고/최저 계산
레벨 1
둘 다 정렬시키고 인덱스 훑어가며 같은것 또는 0이 있는지 체크
길이가 6개인 배열로 정해져 있음
따라서 O(1)
길이가 n개라면 정렬때문에 O(nlogn)
def solution(lottos, win_nums):
lottos.sort()
win_nums.sort()
l= 0
w=0
same_count = 0
zero_count = 0
while l<6 and w < 6:
if lottos[l] == 0:
zero_count += 1
l+=1
elif lottos[l]==win_nums[w]:
same_count+=1
l+=1
w+=1
elif lottos[l]>win_nums[w]:
w+=1
elif lottos[l]<win_nums[w]:
l+=1
# 1차 시도
#rank = 6 if same_count<2 else (7-same_count)
#answer = [rank - zero_count, rank]
# 랭크 계산
low_rank = 6 if same_count<2 else (7-same_count)
high_rank = 6 if (same_count+zero_count)<2 else (7-(same_count+zero_count))
answer = [high_rank, low_rank]
return answer
길이가 6개인 배열로 정해져 있음
따라서 O(1)
길이가 n개라면 정렬때문에 O(nlogn)
성공
시도 2회
시작: 21.09.13 10:17
끝: 21.09.13 10:36
랭크를 계산할 때 high를 low-(0의 개수)로 했더니 순위가 0위가 나오기도 했다.
일치하는 것이 없어 6등인데, 모두 0이었던 경우 6-6이 되어 0순위가 나온다.
6위는 1개 번호가 일치, 0개 번호가 일치인 경우 모두 6위로 처리해야해서 생긴 문제이다.
따라서 계산할 떄 low와 high를 따로 계산하였다.
https://programmers.co.kr/learn/courses/30/lessons/77484/solution_groups?language=python3
set의 교집합으로 풀이하였다.
0의 개수를 셀 때에도 count(0) 함수를 사용하였다.