본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 로또의 최고 순위와 최저 순위

by 코드뭉치 2023. 6. 2.

로또의 최고 순위와 최저 순위

 

프로그래머스

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

programmers.co.kr

 

 

1. 구해야 하는 것
    최저 등수와 최고 등수
2. 1을 구하기 위해 필요한 것
    확정으로 맞은 번호들을 빼고 나면, 남은 갯수 + 1이 최저 등수
        맞은 번호를 빼는 법
            remove? del? pop?
            리스트 컴프리헨션으로 다른 번호만 넣어준다.
    거기서 0의 개수를 더 빼주면 최고 등수
3. 그 외 고려해야 할 사항
	7등은 없으므로 min(6, 나온 값)으로 최대 6등까지 나오게 한다.

 

 

remove를 사용한 코드, 당첨 번호에서 lottos와 공통으로 들어간 번호들을 지워준 뒤,

len(lottos)+1로 최저 등수, 거기서 lottos의 원소들 중 0의 개수를 더 빼주면 최고 등수가 된다.

def solution(lottos, win_nums):
    for i in win_nums:
        if i in lottos:
            lottos.remove(i)
    return [min(len(lottos) - lottos.count(0) + 1), min(6, len(lottos)+1)]

 

 

리스트 컴프리헨션을 이용한 방법.

remove로 지워주는게 아니라 처음부터 일치하지 않는 번호만 담은 리스트를 만든 뒤,

위 코드과 같은 방식으로 최고 등수와 최저 등수를 구해준다.

def solution(lottos, win_nums):
    a = [i for i in lottos if i not in win_nums]
    return [min(6, len(a)-a.count(0)+1), min(6, len(a)+1)]

 

댓글