알고리즘 문제 풀이: 파이썬/Programmers

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

hueco 2021. 6. 16.

 

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/77484

 

프로그래머스

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

programmers.co.kr

 

내 풀이:

 

참고한 풀이:

첫 번째)

 

두 번째)

 

비교:

 문제의 지문이 꽤 긴 편이라서 조금 긴장했지만, 생각보다 구현의 아이디어가 간단한 문제였다. 입력값으로 주어진 lottos 배열과 win_nums 배열을 비교하여 일치하는 개수에 따라 나올 수 있는 최고 순위와 최저 순위를 배열로 리턴하면 된다. 

최고 순위를 구하는 방법은 로또의 배열과 정답 배열의 일치하는 수를 최대로 만들면 되기 때문에 실제 일치하는 개수에 로또 배열의 0의 개수를 더해주면 된다. 최저 순위를 구할 때는 실제 일치하는 개수만 체크해주면 된다. (0은 모두 불일치로 생각하면 되기 때문에)

 

 이런 아이디어로 문제를 해결했지만 내 코드에서 조금 복잡한 부분이 있다. 문제에서 일치하는 개수가 0과 1일 때 모두 6등을 리턴해야 되는데, 코드에서 등수를 저장한 score_table에 6이 한 번만 있기 때문에 이를 핸들링한 코드가 들어가서 더 복잡하게 코드를 작성한 것 같다.

해당 부분을 제외하고는 위의 첫 번째 참고용 풀이와 코드가 유사하고, 두 번째 풀이는 반복문을 돌기 전에 0의 개수를 count()를 사용해서 미리 저장했던 부분이 다른데 참고용으로 가져왔다.

 
 

댓글