JH 개발 블로그
2021 카카오 코딩테스트 lv2. 순위 검색 파이썬 본문
from bisect import bisect_left
from collections import defaultdict
def solution(info, query):
candidates = defaultdict(list)
answer = []
for i in range(len(info)):
temp = info[i].split()
for i in [temp[0], '-']:
for j in [temp[1], '-']:
for k in [temp[2], '-']:
for l in [temp[3], '-']:
candidates[(i,j,k,l)].append(int(temp[4]))
for c in candidates:
candidates[c].sort()
for i in range(len(query)):
temp = query[i].split()
conditions = (temp[0],temp[2],temp[4],temp[6])
score = temp[7]
answer.append(len(candidates[conditions]) - bisect_left(candidates[conditions],int(score)))
return answer
만약 query의 요소중 하나가 "- and backend and senior and chicken 150" 이라면,
"cpp and backend and senior and chicken 150"
"java and backend and senior and chicken 150"
"python and backend and senior and chicken 150"
위 세개의 조건을 물어보는것과 같습니다.
따라서 딕셔너리[(개발언어,직군,경력,소울푸드)] 에 점수를 넣고, 각 항목 하나씩 '-'로 변경한 후에도 점수를 넣어줍니다.
그 후, 효율성 테스트 통과를 위해 딕셔너리를 정렬 해준뒤 이분탐색하여 수를 구해줍니다.
'코딩테스트 > 2021 KAKAO BLIND RECRUITMENT' 카테고리의 다른 글
2021 카카오 코딩테스트 lv.3 카드 짝 맞추기 파이썬 (0) | 2022.01.26 |
---|---|
2021 카카오 코딩테스트 lv.3 광고 삽입 파이썬 (0) | 2022.01.25 |
2021 카카오 코딩테스트 lv.3 합승 택시 요금 파이썬 (0) | 2022.01.24 |
2021 카카오 코딩테스트 lv2. 메뉴 리뉴얼 파이썬 (0) | 2022.01.24 |
2021 카카오 코딩테스트 lv1. 신규 아이디 추천 파이썬 (0) | 2022.01.24 |
Comments