일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- React.js
- 웹크롤링
- 씨쁠쁠
- Next/Image 캐싱
- 파이썬 코딩테스트
- 네이버 부스트캠프
- 파이썬
- PubSub 패턴
- Image 컴포넌트
- 자바스크립트 컴파일
- Server Side Rendering
- 네이버 부캠
- 스택
- beautifulsoup
- Next.js
- 자바 프로젝트
- 브라우저 동작
- react
- 부스트캠프
- 네이버 부스트캠프 멤버십
- c++
- 자바스크립트
- 파이썬 웹크롤링
- 비디오 스트리밍
- React ssr
- 프로그래머스
- 자바스크립트 객체
- 코딩테스트
- 멘션 추천 기능
- git checkout
Archives
- Today
- Total
코린이의 개발 일지
[파이썬 코테 문제] 로또의 최고 순위와 최저 순위 - 2021 본문
반응형
안녕하세요. 이번에도 코테 문제를 들고 온 폴라민 입니다.
이번에도 마찬가지로 문제의 해답이 나와있으니 아직 풀어보지 않으신 분들은 아래의 사이트에 가서 문제를 풀어본 후 오시길 바랍니다.
https://programmers.co.kr/learn/challenges
이번 문제는 비교적 간단한 문제였습니다. 제가 짠 코드부터 볼까요?
def solution(lottos, win_nums):
zero=lottos.count(0)
correct_num=0
for num in lottos:
if num in win_nums:
correct_num+=1
top=7-(zero+correct_num)
low=7-correct_num
if top==7:
top=6
if low==7:
low=6
answer = [top,low]
return answer
코드를 간략히 설명드리면
먼저 lottos 숫자 배열에서 0의 개수를 세어 zero 변수에 저장해 두고
그 다음 맞춘 숫자 correct_num을 세어줍니다.
lottos 배열에 있는 숫자들을 하나씩 가지고 와서 숫자가 win_nums에 있는지 확인 하면 되겠죠?
이렇게 수를 다 세었으면 순위를 계산해 줍니다.
가장 많이 맞추었을 경우는 0인 경우를 전부 맞췄다고 가정했을 때 일거고
가장 적게 맞추었을 때에는 0인 경우를 전부 틀렸다고 가정했을 때 일겁니다.
그렇게 계산해준 등수를 리스트 자료형으로 리턴해주면 끝이 납니다.
조금 더 간단한 방법을 살펴 볼까요?
def solution(lottos, win_nums):
rank=[6,6,5,4,3,2,1]
zero=lottos.count(0)
correct_num=0
for num in lottos:
if num in win_nums:
correct_num+=1
top=rank[zero+correct_num]
low=rank[correct_num]
answer = [top,low]
return answer
별건 없고 rank라는 리스트를 따로 만들어 주어 0개 맞췄을 경우 순위가 7등이니 처음 코드에서는 그 부분을 조건문으로 처리 해주었었는데
위와 같이 해주면 코드가 조금더 간결해지겠죠?
이상 가볍게 풀어볼 수 있는 코테 문제였습니다.
다음 포스팅에서 만나요~ 안녕!!
반응형
'파이썬 코딩테스트 연습' 카테고리의 다른 글
[코딩테스트] - 2018 카카오 블라인드 : 뉴스 클러스터링 (0) | 2022.07.01 |
---|---|
[파이썬 코딩테스트] 스택, 이중 배열 간단하게 연습하기 좋은 코딩 문제 (0) | 2022.01.21 |
[파이썬 코딩테스트] 키패드 누르기 - 2020 카카오 인턴십 (0) | 2022.01.10 |
[파이썬 코딩테스트] 신규 아이디 추천 (2021 Kakao blind recruitment) (0) | 2022.01.08 |
Comments