programmers.co.kr/learn/courses/30/lessons/77484
2021년 상반기 웹 백엔드 개발 데브 매칭에 출제된 문제입니다.
그때도 푼 기억이 있는 문제인데, 다시 풀려니까 코드를 더럽게 짰다만 기억나고 디테일한 부분은 기억이 안나서 다시 풀어봤습니다.
문제 요약
lottos는 내가 보유한 로또 번호 win_nums는 당첨 로또 번호입니다. lottos 배열의 0은 지워져서 알 수 없는 번호이고 0을 고려해서 최대 등수와 최소 등수를 계산하는 문제입니다.
문제 풀이
자 간단합니다. lottos 배열과 win_nums 배열을 비교해서 총 몇개가 매칭이 되었는지 카운팅해줍니다. 그리고 0에 들어갈 숫자가 모두 당첨 번호와 관련이 없다면 최소 순위를 알 수 있죠. 그 다음 0이 모두 맞았다면 그건 최대 등수가 되겠구요. 일치 번호 카운팅과 0 개수 카운팅을 해주면 되는 문제입니다.
그 다음은 순위와 매칭시키는 일이 남습니다. 이 부분을 실제 시험에서 엄청 더럽게 짰던 기억이 있습니다. switch - case문이 따로 없나..? 검색해보기도 하고.. 그냥 싸그리 if문으로 제어했었죠.
다시 풀때 제가 떠올린 방식은 7-(cnt+cnt_zero) 였습니다. 그리고 6이상이면 전부 6으로 fix해두고요.
더 나은 풀이법
다른 사람들의 풀이를 보자마자 아..!! 하고 깨달았습니다. 해답은 바로 rank = [6,6,5,4,3,2,1] 배열을 따로 만들어두는 것!! 오! 굉장히 직관적이면서도 간단한 방법 아닌가요?? 진짜 구현 문제는 아이디어만 잘 떠올리면 더 간편하게 풀 수 있어서 재밌네요.
전체 코드
'알고리즘 > ps' 카테고리의 다른 글
백준 17547 Floor plan 풀이 (0) | 2022.12.29 |
---|---|
[python] 백준 2357 최솟값과 최댓값 (0) | 2021.05.12 |
[python] 수식 최대화 - 프로그래머스 (0) | 2021.05.05 |
[python] 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2021.05.04 |
[python] 백준 3190 뱀 (0) | 2021.03.31 |