코딩 테스트 연습

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

코드뭉치 2023. 6. 2. 10:40

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

 

프로그래머스

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

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)]