일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- baekjoon
- 이론
- HAVING 절
- level1
- 코딩테스트
- java
- 파이썬
- 헤드퍼스트 디자인패턴
- 단계별로 풀어보기
- programmers
- BOJ
- Codeup
- 기본
- Python 3
- pypy3
- 명품 자바 프로그래밍
- GROUP BY 절
- SQLD / SQLP
- SELECT 절
- 응용
- 자바
- 공공데이터
- Python
- Codeforces Round #802 (Div. 2)
- JAVA 11
- 기초
- 기초100제
- 백준
- 개념
- Java11
- Today
- Total
Development Project
[ Programmers - 06/24 ] - 로또의 최고 순위와 최저 순위(Python)_Level1 본문
[ Programmers - 06/24 ] - 로또의 최고 순위와 최저 순위(Python)_Level1
나를 위한 시간 2022. 6. 24. 14:02- 문제링크
https://programmers.co.kr/learn/courses/30/lessons/77484
- 문제
- 시행착오
등수가 맞은개수와는 반대로 증가하는 개념이라 계산하며 혼란이와 생각보다는 많이 틀렸다. 좀더 차분히 생각하고 적어봤으면 금방끝났을 것이라는 생각에 아쉬움이 좀 남았다.
- 문제분석
lottos : 민우의 동생이 일부 혹은 전체를 지워버려 남은 로또번호
win_nums : 로또당첨번호
위 2 인자를 받아
민수가 얻을수있는 최고 등수와 최저등수를 출력하는 문제이다. 로또번호는 0이 아닌경우 중복되지 않는다.
- 각 파라미터의 유형
lottos = [44, 1, 0, 0, 31, 25]
<조건> 길이가 6인 정수 배열 and 0 ≤ lottos의 모든원소 ≤ 45 and 0은 민우의 동생이 지워버려 식별불가한 번호
==> 숫자로 이루어지고 0제외 같은 숫자가 여러개 존재하지 않으며, 위의 조건을 충족한다.
win_nums = [31, 10, 45, 1, 6, 19]
<조건> 길이가 6인 정수 배열 and 1 ≤ win_nums의 모든원소 ≤ 45
==> 숫자로 이루어지고 같은 숫자가 여러개 존재하지 않으며, 위의 조건을 충족한다.
- 문제접근
※ 작성자가 문제를 보고 든 생각을 차례대로 써본 것이다. 이 순번은 정답이 아니며 매번 다른 생각을 해보길 권장한다.
1) lottos는 0이 아닌 모든 값들이 중복되지않고, win_nums는 모든 값들이 중복되지않는다. 게다가 둘의 공통점을 찾아야하므로, 집합자료형을 이용하여 교집합을 쓰는게 좋아보인다.
lottos=set(lottos) #[1,2,3,4,5,6]
win_nums=set(win_nums) #[1,2,7,8,4,5]
lottos & win_nums #[1,2,4,5]
2) 0의 개수를 구하기위해 0을 제거하는 함수인 remove를 사용하고자 했지만 0이 없을경우 오류가 나므로 discard를 사용하기로 했다.
lottos.discard(0)
- 최종코드
def solution(lottos, win_nums):
answer=[]
lottos=set(lottos)
win_nums=set(win_nums)
lottos.discard(0)
a=1-len(lottos & win_nums)+len(lottos)
answer.append(6 if a>6 else a)
a=7-len(lottos & win_nums)
answer.append(6 if len(lottos)==0 or a>6 else a)
return answer
'CodingTest > Programmers' 카테고리의 다른 글
[ Programmers - 06/26 ] - 숫자 문자열과 영단어(Python)_Level1 (0) | 2022.06.26 |
---|---|
[ Programmers - 06/25 ] - 신규 아이디 추천(Python)_Level1 (0) | 2022.06.26 |
[ Programmers - 06/24 ] - 신고결과받기(Python)_Level1 (0) | 2022.06.24 |